我正在使用 Koala gem 发出 facebook 请求,我有以下代码:

  @graph = Koala::Facebook::API.new(oauth_token)
  @graph.batch do |batch_api|
    #... do stuff here
  end

我想模拟批处理调用来模拟我们在那里做的事情。

这是我在 RR 中所拥有的。
oauth_token= "Sometoken"
batch_api_mock = nil
graph_mock = mock(Koala::Facebook::API).new(oauth_token).mock!
graph_mock.batch.returns do
  yield batch_api_mock if block_given?
end

问题是block_given?即使在我的源中传递了一个块,也返回 false。

我如何模拟使用 RR 获取块的方法?

最佳答案

K 所以在查看打开的票后我发现答案是块的第一个参数是一个 RR::ProcFromBlock 这正是将传递给函数的块。这是对代码的修改以使其工作。

oauth_token= "Sometoken"
batch_api_mock = nil
graph_mock = mock(Koala::Facebook::API).new(oauth_token).mock!

#The block is passed in as a proc as the first argument to the returns block.
graph_mock.batch.returns do |proc_as_block|
  proc_as_block.call
end

希望能帮助某人节省一些时间。他们需要将这个小 gem 添加到文档中

关于ruby-on-rails-3 - 您如何在 Rails 3 上使用 RR(双 ruby )来模拟带有块的方法,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/8056523/

10-12 18:35