Sto cercando di imparare a utilizzare gli esempi condivise di RSpec caratteristica e sto ottenendo un messaggio di avviso quando eseguo il mio test:Come evitare l'avviso "precedentemente definito" degli esempi condivisi di 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.
....
Ho letto quello che penso è la documentazione su questo problema here ma sto avendo difficoltà a capirlo/vedere i takeaway per il mio caso.
Ecco il mio esempio condiviso:
# 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
Sto cercando di utilizzare questo in un modello User
e un modello Company
. Ecco come si presenta:
# 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
Per le raccomandazioni nella documentazione RSpec ho linkato sopra, Ho provato a cambiare include_examples
-it_behaves_like
, ma che non ha aiutato. Ho anche commentato company_spec.rb
interamente, quindi c'era solo una specifica che utilizzava l'esempio condiviso e sto ancora ricevendo l'avviso.
Qualcuno può aiutarmi a vedere cosa sta succedendo qui e cosa dovrei fare in questo caso per evitare l'avviso?