【问题标题】:yield to a block using rr使用 rr 让出块
【发布时间】:2013-02-22 17:50:47
【问题描述】:

我正在尝试使用rr 测试以下代码:

response = RestClient.get(url, {:params => params}){|response, request, result| response }

在原版rspec 中,你会这样做:

RestClient.should_receive(:get).with(url, {:params => params}).and_yield(response, request, result)

我该如何处理rr

设置:

let(:url) { "http://localhost/" }
let(:params) { {:item_id => 1234, :n => 5} }
let(:response) { Object.new }
let(:request) { Object.new }
let(:result) { Object.new }

我尝试了很多变化:

mock(RestClient).get(url, {:params => params}) { response, request, result }

mock(RestClient).get(url, {:params => params}, &proc/lambda{}).return(result)

mock(RestClient).get(url, {:params => params}).yields(response, request, result)

mock(RestClient).get(url, {:params => params}).returns do |proc_as_block|
  response
end

但它们都不起作用。

【问题讨论】:

    标签: ruby-on-rails ruby rspec rr


    【解决方案1】:

    终于明白了。这个拉取请求帮助了:https://github.com/btakita/rr/pull/82

    mock(RestClient).get(url, {:params => params}).yields(response, request, result) { response }
    

    【讨论】:

    • 谢谢,你帮助了这个answer,另一个使用 rr 收益率的例子。
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多