如何在 Mocha Expectation (Ruby) 的块内传递自由范围内的任何内容

How to pass freerange anything inside a block in a Mocha Expectation (Ruby)

我正在尝试验证将块传递给它的方法的预期。只要我不使用 anything 关键字,一切都很好,但是我需要使用 anything 关键字,以免匹配所有期望的一部分。

待测试的实际函数调用。

RestClient::Request.execute(:method => :post, :url => some_url, :headers => {}.to_json, :payload => {}.to_json)

当我测试它时,

这些工作(注意anything的用法)

RestClient::Request.expects(:execute).with(:method => :post, :url => some_url, :headers => {}.to_json, :payload => {}.to_json)
RestClient::Request.stubs(:execute).with(:method => :post, :url => some_url, :headers => {}.to_json, :payload => {}.to_json)
RestClient::Request.stubs(:execute).with(anything)

这不是(注意 anything 的用法)

RestClient::Request.stubs(:execute).with(:method => :post, :url => some_url, :headers => anything, :payload => anything)

我的问题是我只想验证请求的 URL 和方法,而不是 headers 和 body。我错过了什么?

想出来了 - 如果它对某人有帮助,这就是它的完成方式

使用 .with(has_entries( ... )) 方法并仅传递要传递给验证 - 避免将 anything 传递给 .with 方法。

RestClient::Request.expects(:execute).with(has_entries(:method => :post, :url => url))