estoy escribiendo la especificación para el regulador:RSpec. ¿Cómo verificar si se llama al método del objeto?
it 'should call the method that performs the movies search' do
movie = Movie.new
movie.should_receive(:search_similar)
get :find_similar, {:id => '1'}
end
y mi controlador parece:
def find_similar
@movies = Movie.find(params[:id]).search_similar
end
después de ejecutar el rspec me sale el siguiente:
Failures:
1) MoviesController searching by director name should call the method that performs the movies search
Failure/Error: movie.should_receive(:search_similar)
(#<Movie:0xaa2a454>).search_similar(any args)
expected: 1 time
received: 0 times
# ./spec/controllers/movies_controller_spec.rb:33:in `block (3 levels) in <top (required)>'
que me parece para entender y aceptar, porque en mi código de controlador invoco el método de clase (película) y no veo ninguna forma de conectar "find_similar" con el objeto, creado en el spe do.
Entonces la pregunta es -> ¿cuál es la forma de comprobar si se llama al método en el objeto, creado en la especificación?
ponen de acuerdo sobre el exceso de tropezar, visto demasiadas pruebas de comprobación de que el método funciona tropezar en lugar de comprobar que la aplicación funciona. – njorden
nice one. aquí está la documentación sobre el condimento: https://www.relishapp.com/rspec/rspec-mocks/v/2-5/docs/message-expectations que necesitaba este bit obj.should_receive '(: Mensaje) .con ('more_than ',' one_argument ') ' – TomDunning
uso interesante de las etiquetas" " – fotanus