Я пытаюсь научиться использовать функцию общих примеров 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.
....
Я прочитал документацию по этой проблеме, которую я считаю здесь , но у меня возникают проблемы с пониманием этого / просмотром выносов для моего случая.
Вот мой общий пример:
# 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
, чтобы была только одна спецификация, использующая общий пример, и я все еще получаю предупреждение.
Может ли кто-нибудь помочь мне увидеть, что на самом деле здесь происходит и что я должен делать в этом случае, чтобы избежать предупреждения?