Tôi muốn kiểm tra xem phương thức được gọi chính xác (n) lần, nhưng Tôi vẫn muốn phương thức đó thực hiện chức năng ban đầu của nó. Hãy xem xét một hệ thống thu nhỏ đơn giản lưu trữ tệp hình thu nhỏ và đảm bảo tệp thực thi "chuyển đổi" của ImageMagick tạo hình thu nhỏ chỉ được gọi theo yêu cầu đầu tiên.rspec 2: phát hiện cuộc gọi đến phương thức nhưng vẫn thực hiện chức năng của 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
Trong trường hợp của tôi, tôi có được nỗ lực đầu tiên, nhưng có thể có trường hợp không. Cái thứ hai thất bại vì cuộc gọi Thumbnail.convert
được phát hiện nhưng chính phương thức đó không làm bất cứ điều gì. Có cách nào để chỉ phát hiện các cuộc gọi đến phương pháp và có nó làm điều đó ban đầu?
BTW: Tôi nghi ngờ điều này question là rất giống nhau, nhưng sau đó tôi bị lạc trong mô tả và cũng chưa có ai trả nó ...
Cảm ơn, đã làm việc như một sự quyến rũ! – thomax