Próbuję przetestować następujący scenariusz:Prawidłowy sposób testowania "asocjacji" z Rspec?
-> Mam model o nazwie Team, który ma sens tylko wtedy, gdy został utworzony przez użytkownika. Dlatego każda instancja Team musi być powiązana z użytkownikiem.
W celu sprawdzenia, że zrobiłem, co następuje:
describe Team do
...
it "should be associated with a user" do
no_user_team = Team.new(:user => nil)
no_user_team.should_not be_valid
end
...
end
co zmusza mnie do zmiany modelu zespołu jako:
class Team < ActiveRecord::Base
# Setup accessible (or protected) attributes for your model
attr_accessible :name, :user
validates_presence_of :name
validates_presence_of :user
belongs_to :user
end
Czy to wydaje się poprawne dla ciebie? Martwię się tylko o to, aby atrybut: user był dostępny (przypisanie masy).
Co powinienem faktycznie testy? Chcę się upewnić, że po utworzeniu nowego zespołu faktycznie należy on do użytkownika. –
'Shoulda' sprawdzi to," upewni się, że istnieje związek belongs_to "(http://rubydoc.info/github/thoughtbot/shoulda-matchers/master/Shoulda/Matchers/ActiveRecord#belong_to-instance_method). W ten sposób można bezpiecznie założyć, że przy tworzeniu nowego zespołu będzie należał do użytkownika. –
Właśnie to przetestowałem i jestem w stanie stworzyć zespół bez określania użytkownika. Shoulda wydaje się po prostu sprawdzać, czy belongs_to istnieje w modelu. Chcę mieć pewność, że zespół ma powiązanego użytkownika ... Uważam, że muszę potwierdzić obecność powiązanego użytkownika podczas tworzenia zespołu ... –