【问题标题】:Stub repeated method calls for rake test存根重复方法调用 rake 测试
【发布时间】: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 + 做一些存根。

标签: ruby rake-test


【解决方案1】:

所以我发现了。

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

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

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-11-04
    • 2019-12-10
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多