作为新黄瓜测试的一部分,我需要模拟一个外部 API 请求。我通常的做法是先编写发出调用的测试,然后期望 WebMock 抱怨它。然后使用 WebMock 提供的信息,存根请求。
但是在这个 repo 中(这对我来说是新的),WebMock 不会拦截请求。它只是超时。更奇怪的是,它的行为完全符合我在 rspec 中的预期(它拦截了我的请求尝试,并告诉我如何模拟它),但在 cucumber 中却没有。
我有这个features\support\webmock.rb:
WebMock.disable_net_connect!(:allow_localhost => true)
我也尝试将同一行放入features\support\env.rb
. 仍然允许请求。
当然,我可以弄清楚如何以另一种方式存根,但是如果我犯了错误,我的测试可能会进行实时调用,这让我很困扰。任何人都可以帮忙吗?
更新:
我已经确定这(:allow_localhost => true)
确实阻止了外部请求的发出,但它不会触发显示错误请求的 WebMock 机制(我假设通过抢救异常),而是请求只是超时。还是不知道为什么。
更新 2:
我发现了问题。此 repo 使用自定义客户端 gem 与另一个内部服务通信。该 gem 挽救了连接错误,因此 webmock 错误被吞没了。