Quiero comprobar si un método fue llamado exactamente (n) veces, pero Todavía quiero que ese método realice su función original. Considere un sencillo sistema de miniaturas que almacena en caché el archivo de miniaturas y asegúrese de que el ejecutable de "conversión" de ImageMagick que crea la miniatura solo se invoque en la primera solicitud.rspec 2: detecta la llamada al método pero aún así tiene que realizar su función
it "this passes: should detect a cached version" do
thumbnail_url = thumbnail_url_for("images/something.jpg")
get thumbnail_url
last_response.should be_ok
Sinatra::Thumbnail.should_not_receive(:convert)
get thumbnail_url
last_response.should be_ok
end
it "this fails: should detect a cached version" do
Sinatra::Thumbnail.should_receive(:convert).exactly(1).times
thumbnail_url = thumbnail_url_for("images/something.jpg")
get thumbnail_url
last_response.should be_ok
get thumbnail_url
last_response.should be_ok
end
En mi caso me escapo con mi primer intento, pero podría haber casos en que no lo haga. El segundo falla porque se detecta la llamada Thumbnail.convert
pero el método en sí no hace nada. ¿Hay alguna forma de detectar la llamada al método y hacer que sea original?
Por cierto: Sospecho que esto question es muy similar, pero luego se pierden en la descripción y también es sin respuesta ...
¡Gracias, trabajado como un encanto! – thomax