Tengo esto en mi prueba
Project.should_receive(:find).with(@project).and_return(@project)
pero cuando el objeto recibe esa llamada al método dos veces, tengo que hacer
Project.should_receive(:find).with(@project).and_return(@project)
Project.should_receive(:find).with(@project).and_return(@project)
¿Hay alguna forma de decir algo como
Project.should_receive(:find).with(@project).and_return(@project).times(2)
ruby-on-rails
rspec
Jakub Arnold
fuente
fuente
any_instance
?La nueva
expect
sintaxis de rspec se verá así:por 2 veces:
exactamente n veces:
por al menos n veces:
fuente
have_received
sintaxis también funciona.expect(Project).to have_received(:find).exactly(n).times
etc.@JaredBeck señaló. La solución no funcionó para mí de
any_instance
guardia.En cualquier caso, terminé usando stub en lugar de should_receive.
Esto funcionará para cualquier no. aunque muchas veces.
fuente
should_receive
, a diferencia deany_instance
, espera que la clase reciba el mensaje el número especificado de veces.any_instance
por otro lado, generalmente se usa para cortar un método.Entonces, el primer caso es una expectativa que nos gustaría probar, mientras que el segundo es pasar de un método a la siguiente línea para que podamos seguir adelante.
fuente