2012-07-02 57 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})