我想檢查一個方法是否被調用完全(n)次,但我仍然希望該方法執行其原始功能。考慮一個簡單的縮略圖系統緩存縮略圖文件,並確保ImageMagick的創建縮略圖的「轉換」可執行文件僅在第一個請求上被調用。rspec 2:檢測調用方法,但仍然有它執行其功能
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
,但該方法本身不起任何作用。有沒有什麼辦法來檢測方法的調用,並讓它做到原來的東西?
BTW:我懷疑這是question非常相似,但後來我得到了描述丟失,也很沒有答案......
謝謝,像一個魅力工作! – thomax