En mi controlador de Rails, estoy creando varias instancias de la misma clase de modelo. Quiero agregar algunas expectativas de RSpec para poder probar que está creando el número correcto con los parámetros correctos. Por lo tanto, esto es lo que tengo en mi especificación:¿Cómo puedo agregar múltiples expectativas de should_receive sobre un objeto usando RSpec?
Bandmate.should_receive(:create).with(:band_id => @band.id, :user_id => @user.id, :position_id => 1, :is_leader => true) Bandmate.should_receive(:create).with(:band_id => @band.id, :user_id => "2222", :position_id => 2) Bandmate.should_receive(:create).with(:band_id => @band.id, :user_id => "3333", :position_id => 3) Bandmate.should_receive(:create).with(:band_id => @band.id, :user_id => "4444", :position_id => 4)
Esto está causando problemas porque parece que la clase compañero de banda solo puede tener 1 "should_receive" expectativa fija en él. Por lo tanto, cuando corro el ejemplo, me sale el siguiente error:
Spec::Mocks::MockExpectationError in 'BandsController should create all the bandmates when created' Mock 'Class' expected :create with ({:band_id=>1014, :user_id=>999, :position_id=>1, :is_leader=>true}) but received it with ({:band_id=>1014, :user_id=>"2222", :position_id=>"2"})
Esos son los parámetros correctos para la segunda llamada a crear, pero RSpec está poniendo a prueba en contra de los parámetros erróneos.
¿Alguien sabe cómo puedo configurar mis expectativas should_receive para permitir múltiples llamadas diferentes?
Eso debería funcionar. ¿Qué versión de RSpec estás usando? Intente llamar a los métodos de código en secuencia de la especificación (Bandmate.create (...: user_id => @ user.id ...); Bandmate.create (...: user_id => "2222" ...); ...) y ver si funciona. –