Я хочу проверить, вызывался ли метод ровно (n) раз, , но Я все еще хочу, чтобы этот метод выполнял свою исходную функцию . Рассмотрим простую систему создания эскизов, которая кэширует файл эскиза, и убедитесь, что исполняемый файл ImageMagick "convert", который создает эскиз, вызывается только при первом запросе.
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
В моем случае я ухожу с первой попытки, но могут быть случаи, когда Я не. Второй не работает, потому что обнаружен вызов Thumbnail.convert
, но сам метод ничего не делает. Есть ли способ просто обнаружить вызов метода и сделать его оригинальным?
Кстати: Я подозреваю, что этот вопрос очень похож, но потом я теряюсь в описании, и он остается без ответа ...