Разве обратные вызовы не должны тестироваться в соответствующей спецификации модели?

ичок в 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?

Спасибо!

Ответы на вопрос(2)

Ваш ответ на вопрос