Webmock + ":allow_localhost => true"仍然允许访问第三方网站?



我已经写了一份成功的黄瓜和Capybara测试,该测试使用PayPal Sandbox执行购买。但是,我想要存根Paypal沙盒请求,以便我的测试不依赖PayPal沙盒。

我并不100%熟悉Webmock,其文档并不十分清楚。当我添加Webmock GEM时,用

创建了必要的webmock.rb

需要'Webmock/Cucumber'webmock.disable_net_connect!(:lassion_localhost => true)

当我运行旧的黄瓜测试时,它会以正常的打开贝宝沙盒窗口进行操作并完成交易。

这是正常的吗?我虽然Webmock应该将连接到第三方网站连接的尝试。

WebMock可以拦截Ruby Code制作的任何HTTP调用,但它无法控制进行重定向的外部Web浏览器进程。您可以使用Webmock拦截对PayPal API(PayPal Pro)的呼叫。如果您使用PayPal网站付款标准,那么WebMock将无济于事。

您可以在应用程序中创建假testPayPalController,并在测试环境中配置应用程序以重定向到本地假PayPal URL而不是真实的PayPal URL。然后,您可以断言假页的内容和用于请求该页面的参数。

最后一步是通过模拟内部测试的PayPal付款通知来调用请求。

最新更新