28 votos

¿Cómo puedo agregar varios should_receive expectativas sobre un objeto a través de RSpec?

En mi Rieles controlador, estoy creación de varias instancias de la misma clase del modelo. Quiero añadir algunos RSpec expectativas para que yo pueda probar que es crear el número correcto con los parámetros correctos. Así que, he aquí lo que tengo en mis especificaciones:

Compañero de grupo.should_receive(:crear).con(:band_id => @banda.id :user_id => @usuario.id :position_id => 1, :is_leader => true)
Compañero de grupo.should_receive(:crear).con(:band_id => @banda.id :user_id => "2222", :position_id => 2)
Compañero de grupo.should_receive(:crear).con(:band_id => @banda.id :user_id => "3333", :position_id => 3)
Compañero de grupo.should_receive(:crear).con(:band_id => @banda.id :user_id => "4444", :position_id => 4)

Esto está causando problemas, porque parece que el compañero de grupo clase sólo puede tener 1 "should_receive" expectativa establecida en él. Así, al ejecutar el ejemplo, me sale el siguiente error:

Especificación::Burla::MockExpectationError en 'BandsController debe crear todos los compañeros de banda cuando se creó el'
Simulacro de 'Clase' esperado :crear con ({:band_id=>1014, :user_id=>999, :position_id=>1, :is_leader=>true}), pero la recibió con ({:band_id=>1014, :user_id=>"2222", :position_id=>"2"})

Esos son los parámetros correctos para la segunda llamada a crear, pero RSpec es la realización de pruebas en contra de los parámetros incorrectos.

¿Alguien sabe cómo puedo configurar mi should_receive expectativas para permitir que múltiples llamadas diferentes?

35voto

James Baker Puntos 2936

Múltiples expectativas no son un problema en absoluto. Lo que usted está corriendo en el pedido de problemas, dada su específica args en desordenada de las expectativas. Revise esta página para obtener más detalles sobre cómo realizar un pedido expectativas.

La historia corta es que usted debe agregar .ordered al final de cada uno de sus expectativas.

-2voto

bonyiii Puntos 1159

Simulacro De Recibir La Cuenta

my_mock.should_receive(:sym).una vez
my_mock.should_receive(:sym).dos veces
my_mock.should_receive(:sym).exactamente(n).veces
my_mock.should_receive(:sym).at_least(:una vez)
my_mock.should_receive(:sym).at_least (doble)
my_mock.should_receive(:sym).at_least(n).veces
my_mock.should_receive(:sym).at_most(:una vez)
my_mock.should_receive(:sym).at_most (doble)
my_mock.should_receive(:sym).at_most(n).veces
my_mock.should_receive(:sym).any_number_of_times

Obras para rspec 2.5 demasiado.

Iteramos.com

Iteramos es una comunidad de desarrolladores que busca expandir el conocimiento de la programación mas allá del inglés.
Tenemos una gran cantidad de contenido, y también puedes hacer tus propias preguntas o resolver las de los demás.

Powered by:

X