2012-07-02 55 views
0

對於我的項目,我使用耙測試來測試我的庫。例如,我有一個方法,像connection.users.add_users(options)Stub重複方法調用耙測試

json_response = check_users(options) 
batch = nil 
Timeout::timeout(30) do 
    begin 
    sleep 1    
    batch = connection.batches.find(json_response["batch_id"]) 
    end while batch.state !="completed" 
end 
connection.users.add_users(batch.target_id, options) 

所以,首先我做一個HTTP請求到我的服務,然後我得到的迴應(BATCH_ID),循環,直到該批次結束後,再作請求並返回響應。

通常,在規格我做

let(:connection){setup_test_connection('{"batch_id": 344235}', '202')} 

這將存根connection的迴應,但在這種方法的情況下,它存根只有第一個呼叫,然後試圖讓我的服務真正的請求,所以我得到一個錯誤(超時,因爲當時服務實際上是關閉的)。

是否有任何方法來存根connection的類方法的每個可能的電話?

+0

能否請您就如何你真的存根你的電話信息? – binarycode

+0

我嘗試這樣做:@mock = MiniTest :: Mock.new,然後@ mock.expect(:find,42) - 像這樣 –

+0

我的意思是你究竟如何存留你的'連接'調用?你的問題並不清楚。 'setup_test_connection'做了什麼? – binarycode

回答

0

所以我找到了。

我應該用存根僞造裏面的請求是這樣的:

connection.servers.stubs(:schedule_create).returns({"batch_id" => 235234})