对于我的项目,我使用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
类方法的所有可能调用?
答案 0 :(得分:0)
所以我发现了。
我应该使用存根来伪造内部请求:
connection.servers.stubs(:schedule_create).returns({"batch_id" => 235234})