webmock:如何列出(转储)所有模拟的响应?

cl25kdpy  于 2021-09-29  发布在  Java
关注(0)|答案(1)|浏览(269)

如果您在未注册的测试中发出web请求,webmock将引发异常,建议如何对其进行模拟,并列出以前注册的所有模拟:

我希望能够转储所有注册的模拟,就像上面绿色圆圈部分一样。我该怎么做?
我尝试了几次这样的调用,但都没有成功:

snippet = WebMock::RequestSignatureSnippet.new(nil)
puts snippet.request_stubs

但我在第一行得到了这个错误:

ArgumentError:
   wrong number of arguments (given 0, expected 1)
 # ./spec/models/user_spec.rb:113:in `new'

虽然我不明白 wrong number of argument 错误,(毕竟,我给了零分)我怀疑我找错了方向,有一个简单的方法可以做到这一点。我在文档或在线搜索中没有找到任何参考资料。
我可以复制代码并编写自己的转储程序,但这似乎很愚蠢。
除了发出错误的网络请求外,有没有一种简单的方法可以获得所有注册WebMock的格式化转储?

rjzwgtxy

rjzwgtxy1#

你可以检查一下内容 request_stub 为定义的类变量 WebMock::StubRegistry :

WebMock::StubRegistry.instance.request_stubs
=> [#<WebMock::RequestStub:.., ...]

在那里你可以使用每一个
RequestStub request_pattern 方法及其内容。
使用 RequestSignatureSnippet .
初始化 RequestSignatureSnippet 对象是一个 RequestSignature 对象本身希望接收http方法(作为字符串)和uri(作为字符串):

signature = WebMock::RequestSignature.new("GET", "http://example.com")
puts WebMock::RequestSignatureSnippet.new(signature).request_stubs

# "registered request stubs: ..."

相关问题