Я новичок в Rspec и пытаюсь настроить тест для профиля пользователя. Профиль принадлежит пользователю.
Теперь у меня есть интеграция API со сторонним сайтом, который работает через пользовательскую модель, но некоторая информация для этой ссылки API содержится в Profile, поэтому у меня есть фильтр after_update для Profile, который сообщает родительскому элементу пользователь, чтобы сохранить, который вызывает обновление API.
Я пытаюсь написать тест для этого и получаю ActiveRecord :: AssociationTypeMismatch. Причина в том, что я использую фиктивного пользователя, но пытаюсь проверить, что при обновлении профиля он отправляет: сохранить пользователю. Кроме того, в модели User есть процесс подтверждения по электронной почте и предоставляемые API-вызовы в процессе создания, поэтому на самом деле не идеально создавать пользователя просто для проверки этого.
Вот мой тест:
it "should save the parent user object after it is saved" do
user = double('user', :save => true )
profile = Profile.create( :first_name => 'John', :last_name => 'Doe' )
profile.user = user
user.should_receive(:save)
end
Итак, очевидно, что ошибка ActiveRecord вызывается попыткой связать фиктивного пользователя с профилем, который ожидает, что реальный пользователь будет связан.
Мой вопрос: как избежать подобных проблем при написании тестов на рельсах? Все, что я хочу сделать в этом тесте, это убедиться, что профиль вызывает: сохранить в родительском пользователе. Есть ли более разумный способ сделать это или способ обойти ошибку ActiveRecord?
Спасибо!