Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/vue.js/6.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
在RSpec中使用循环时输出常规行号 问题:_Rspec_Metaprogramming_Rspec Rails - Fatal编程技术网

在RSpec中使用循环时输出常规行号 问题:

在RSpec中使用循环时输出常规行号 问题:,rspec,metaprogramming,rspec-rails,Rspec,Metaprogramming,Rspec Rails,是否可以使用RSpec./spec/which_spec.rb[1:3:1]格式的示例和嵌套ID获取RSpec故障,以显示其认为不明确的行号?它可以在RSpec本身中完成,还是在类评估“”、\uu文件、\uu行中使用类似于的东西 背景 或者如何阅读rspec./spec/which_spec.rb[1:3:1] 如果您看过上面的输出,您可能会发现很难找出哪个测试失败了 据报道,原因是 “当行号不够时,RSpec使用示例id 唯一用于识别所讨论的示例。” 如果我们使用一个人为的示例来说明该结构,那

是否可以使用
RSpec./spec/which_spec.rb[1:3:1]
格式的示例和嵌套ID获取RSpec故障,以显示其认为不明确的行号?它可以在RSpec本身中完成,还是在
类评估“”、\uu文件、\uu行
中使用类似于
的东西

背景 或者如何阅读
rspec./spec/which_spec.rb[1:3:1]
如果您看过上面的输出,您可能会发现很难找出哪个测试失败了

据报道,原因是

“当行号不够时,RSpec使用示例id 唯一用于识别所讨论的示例。”

如果我们使用一个人为的示例来说明该结构,那么spec文件将类似于

RSpec.describe do
  context 'first' do
    it "is not > 1" do
      expect(0).to_not be > 1
    end
  end

  context 'second' do
    it "is not > 1" do
      expect(1).to_not be > 1
    end
  end

  context 'third' do
    it "is not > 1" do # This is the test on line 15
      expect(2).to_not be > 1 # Our failing spec
    end
  end
end
这是一个仅用于解释结构的说明性示例。这个的输出实际上是
rspec./spec/whatever_spec.rb:15
。我们实际的元编程测试使它更难看到结构,因为它使用循环。这个错误实际上来自以下方面

RSpec.describe do
  %w(first second third).each_with_index do |nth, i|
    context "#{nth}" do
      it "is not > 1" do
        expect(i).to_not be > 1
      end
    end
  end
end

[1:3:1]
可以从右到左理解为“所描述的第一个类的第三个上下文块中的第一个测试。”

我真的希望有一种方法可以覆盖它。这使得使用共享示例非常烦人。我使用iTerm的可点击链接功能快速找到故障,这打破了这一点。