在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的可点击链接功能快速找到故障,这打破了这一点。