Mam kilka specyfikacji, napisanych w RSpec, które testują różne modele. Używam Factory Girl do generowania obiektu do testowania.Test rspec przebiega w izolacji, ale kończy się niepowodzeniem po uruchomieniu z innymi testami.
Teraz najbardziej osobliwa rzecz dzieje:
Kiedy biegnę rspec spec/models/specific_model_spec.rb
--- to przechodzi wszystkie testy w tej specyfikacji
Jednak, gdy biegnę rspec spec/models
--- każdy sprawdzian w tej specyfikacji nie odnosił się do generowane jest niepoprawne powiązanie (przez fabrykę)
Stowarzyszenie stworzone przez fabrykę jest oczywiście ważne, ponieważ przeprowadzanie testu w izolacji również pokazuje.
Co może być przyczyną tego zachowania?
Aktualizacja:
błąd pojawia się podczas uruchamiania specyfikację wraz z innymi specyfikacjami (błąd jest taki sam dla każdej awarii):
6) StreamItem adds a stream_item to a project and consultant when an engagement is added
Failure/Error: @project = Factory.create(:project, :name => 'bar')
Validation failed: Customer is invalid
# ./spec/models/stream_item_spec.rb:44:in `block (2 levels) in <top (required)>'
project factory
jest testowany w innej specyfikacji i przechodzi w porządku ...
Aktualizacja 2: Odpowiedni kod fabryczny stosowany jest następujący:
Factory.define :manager, :class => User do |f|
f.sequence(:email) { |n| "bar#{n}@example.com" }
f.password "pass12"
f.sequence(:name) { |n| "Erwin#{n}" }
f.roles_mask 4
end
Factory.define :customer do |f|
f.sequence(:name) { |n| "foo customer#{n}" }
f.association :last_actor, :factory => :manager
f.account_id 1
end
Factory.define :project do |f|
f.sequence(:name) { |n| "foo project#{n}" }
f.association :manager, :factory => :manager
f.association :customer, :factory => :customer
f.start_date Date.today << 1
f.finish_date Date.today >> 2
f.status 1
f.association :last_actor, :factory => :manager
f.account_id 1
end
Zobaczmy błędy. –
Dodano błąd. – ErwinM
Dzięki. A twój kod fabryczny? –