【发布时间】:2012-07-02 08:11:21
【问题描述】:
对于我的项目,我使用 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')}
这将存根connection 的响应,但在这种方法的情况下,它只存根第一次调用,然后尝试向我的服务发出真正的请求,所以我收到一个错误(超时,因为服务实际上是当时倒下了)。
有什么方法可以存根connection 的类方法的所有可能调用?
【问题讨论】:
-
您能否提供更多详细信息,说明您是如何实际存根呼叫的?
-
我尝试这样做:@mock = MiniTest::Mock.new 然后@mock.expect(:find, 42) - 像这样
-
我的意思是你究竟是如何存根你的
connection电话的?从你的问题看不清楚。setup_test_connection有什么作用? -
方法 setup_test_connection 创建新的 Telescope::Connection.new obj + 做一些存根。