Как избежать предупреждения «определенных ранее» общих примеров 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.
....

Я прочитал документацию по этой проблеме, которую я считаю здесь , но у меня возникают проблемы с пониманием этого / просмотром выносов для моего случая.

Вот мой общий пример:

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

Может ли кто-нибудь помочь мне увидеть, что на самом деле здесь происходит и что я должен делать в этом случае, чтобы избежать предупреждения?

9
задан sixty4bit 3 July 2015 в 14:42
поделиться