ruby-on-rails – 如何避免Rspec共享示例’先前定义的’警告?

前端之家收集整理的这篇文章主要介绍了ruby-on-rails – 如何避免Rspec共享示例’先前定义的’警告?前端之家小编觉得挺不错的,现在分享给大家,也给大家做个参考。
我正在尝试学习如何使用Rspec的共享示例功能,并在运行测试时收到警告:
WARNING: Shared example group 'required attributes' has been prevIoUsly defined at:
  /Users/me/app/spec/support/shared_examples/required_attributes_spec.rb:1
...and you are now defining it at:
  /Users/me/app/spec/support/shared_examples/required_attributes_spec.rb:1
The new definition will overwrite the original one.
....

我已经阅读了我认为关于这个问题的文档here,但是我无法理解它/看到我案例的内容.

这是我的共享示例:

# spec/support/shared_examples/required_attributes_spec.rb

shared_examples_for 'required attributes' do |arr|
  arr.each do |meth|
    it "is invalid without #{meth}" do
      subject.send("#{meth}=",nil)
      subject.valid?
      expect(subject.errors[meth]).to eq(["can't be blank"])
    end
  end
end

我试图在用户模型和公司模型中使用它.这是它的样子:

# spec/models/user_spec.rb

require 'rails_helper'

describe User do
  subject { build(:user) }
  include_examples 'required attributes',[:name]
end

# spec/models/company_spec.rb

require 'rails_helper'

describe Company do
  subject { build(:company) }
  include_examples 'required attributes',[:logo]
end

根据我上面链接的Rspec文档中的建议,我尝试将include_examples更改为it_behaves_like,但这没有帮助.我还完全注释掉了company_spec.rb所以只有一个使用共享示例的规范,我仍然收到警告.

任何人都可以帮助我看看这里发生了什么,以及在这种情况下我应该做些什么来避免警告?

解决方法

我在Rspec Github的 issue中找到了答案:

Just in case someone googles and lands here. If putting your file with
shared examples into support folder has not fixed the following
error…Make sure your filename does not end with _spec.rb.

猜你在找的Ruby相关文章