ruby-on-rails - rspec 不报告错误的行号

标签 ruby-on-rails rspec

对于我的几乎所有规范,当 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/

相关文章:

ruby-on-rails - 调用函数直到(有调用限制)

javascript - 将文本链接到包含 iframe 的对话框

ruby-on-rails - rails 5.2 : Best practice for setting CSP nonce

ruby-on-rails - 事件记录关联未定义方法 'val'(构建、创建由 has_many、belongs_to 启用)

ruby-on-rails - 如何防止 Internet Explorer 中的安全警告?

ruby-on-rails - 是否可以在父类中 stub 一个方法,以便所有子类实例都在 rspec 中 stub ?

ruby-on-rails - RSpec 和机械师错误 : Too many open files

ruby-on-rails - 使用 Devise 的可确认模块进行测试 (RSpec)

ruby-on-rails - 从 Controller 请求对象中获取 Authorization header 的正确方法是什么?

ruby-on-rails - 我的电脑上安装了两个版本的 rspec?