使用rr得到块

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

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

在vanilla 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 

但它们都不起作用。

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

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