Rspec Mocking: ActiveRecord :: AssociationTypeMismatch

Soy nuevo en Rspec e intento configurar una prueba para un perfil de usuario. El perfil pertenece al usuario.

Ahora, tengo una integración API con un sitio de terceros que funciona a través del Modelo de usuario, pero parte de la información para ese enlace API está contenida en Profile, así que tengo un filtro "after_update" en Profile que le dice al usuario padre que guarde , que desencadena una actualización de la API.

Estoy tratando de escribir una prueba para esto, y obtengo un ActiveRecord :: AssociationTypeMismatch. La razón es que estoy usando un usuario simulado, pero estoy tratando de probar que cuando se actualiza el Perfil, envía: guardar en Usuario. Además, el modelo de usuario tiene un proceso de confirmación por correo electrónico y las llamadas API ofrecidas en su proceso de creación, por lo que realmente no es ideal crear un usuario solo para probar esto.

Aquí está mi prueba:

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

Por lo tanto, claramente el error de ActiveRecord se debe al intentar asociar un usuario simulado con un perfil que espera que se asocie un usuario real.

Mi pregunta es, ¿cómo evita este tipo de problema al escribir pruebas de rieles? Todo lo que quiero que haga esta prueba es asegurarme de que Profile llama: guardar en su usuario primario. ¿Existe una forma más inteligente de hacer esto, o una solución para el error ActiveRecord?

¡Gracias!

Respuestas a la pregunta(2)

Su respuesta a la pregunta