对于我的几乎所有规范,当 rspec 报告错误时,它会通知我路径末尾的行号,例如
rspec ./spec/controllers/eclubs_controller_spec.rb:21
但是,在我的一项规范中,它报告了这样的错误位置
rspec ./spec/controllers/eclubs/members_controller_spec.rb[1:1:2:3:1]
这在块的嵌套方面可能有意义,但坦率地说是相当神秘的。
规范的顶部看起来像这样
require 'rails_helper'
describe EclubsController do
那个不起作用的看起来像这样
require 'rails_helper'
describe Eclubs::MembersController do
我在这两个文件中看到的唯一区别是一个 Controller 是命名空间的,但我有其他命名空间的 Controller 可以正确报告错误行。
这是什么原因造成的?
最佳答案
当行号不够唯一以识别有问题的示例时,RSpec 使用示例 ID。
这可能发生在动态定义示例时,例如在循环中:
(0..10).each do |i|
it do
expect(i).to_not eq(5)
end
end
# rspec './my_spec.rb[1:6]'
或者在使用共享示例组时:
RSpec.shared_examples_for "not equal 5" do |i|
it do
expect(i).to_not eq(5)
end
end
RSpec.describe do
it_behaves_like "not equal 5", 5
it_behaves_like "not equal 5", 4
end
# rspec './my_spec.rb[2:1:1]'
关于ruby-on-rails - rspec 不报告错误的行号,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38884565/