【发布时间】:2015-07-03 14:42:59
【问题描述】:
我正在尝试学习如何使用 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
我试图在User 模型和Company 模型中使用它。这是它的样子:
# 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,所以只有一个使用共享示例的规范,我仍然收到警告。
谁能帮我看看这里到底发生了什么以及在这种情况下我应该怎么做才能避免警告?
【问题讨论】:
标签: ruby-on-rails ruby testing rspec warnings