0

对于我的项目,我使用 rake test 来测试我的库。例如,我有一个方法,比如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')}

这将 stubconnection的响应,但在这种方法的情况下,它只存根第一次调用,然后尝试向我的服务发出真正的请求,因此我收到错误(超时,因为当时服务实际上已关闭)。

有什么方法可以存根所有可能connection的类方法调用?

4

1 回答 1

0

所以我发现了。

我应该使用存根来伪造内部请求,如下所示:

connection.servers.stubs(:schedule_create).returns({"batch_id" => 235234})
于 2012-07-02T12:48:07.447 回答