Я новичок в Rspec и пытаюсь настроить тест для профиля пользователя. Профиль принадлежит пользователю.
Теперь, У меня есть интеграция API со сторонним сайтом, который работает через модель пользователя, но некоторая информация для этой ссылки API содержится в профиле, поэтому у меня есть фильтр «after_update» в профиле, который сообщает родительскому пользователю о необходимости сохранения, что запускает обновление 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 вызвана попыткой связать фиктивного пользователя с профилем, который ожидает, что будет связан настоящий пользователь.
Мой вопрос в том, как избежать такого рода проблем при написании тестов rails? Все, что я хочу, чтобы этот тест сделал, - это убедиться, что Profile вызывает: save на родительском User. Есть ли более разумный способ сделать это или обходной путь для ошибки ActiveRecord?
Спасибо!