Stub重复方法调用rake测试

时间:2012-07-02 08:11:21

标签: ruby rake-test

对于我的项目,我使用rake测试来测试我的libs。例如,我有一个方法,如connection.users.add_users(options)

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类方法的所有可能调用?

1 个答案:

答案 0 :(得分:0)

所以我发现了。

我应该使用存根来伪造内部请求:

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