是否可以将WebMock与Rack Test一起使用?

时间:2015-08-20 18:29:51

标签: ruby rspec oauth-2.0 capybara webmock

使用WebMock存根Oauth 2提供程序。问题是我想使用Rack Test。

Rack Test仅针对应用程序的实例运行,并且不了解Oauth 2 Provider等外部HTTP主机。

WebMock.stub_request(:get, "https://test.oauth-provider.com/oauth/authorize")无效,因为请求已作为/oauth/authorize发送给应用。

WebMock是否有办法响应本地请求?例如:

WebMock.stub_request(:get, "/oauth/authorize")

1 个答案:

答案 0 :(得分:1)

在我看来,你对你正在测试的东西感到有点困惑,并且必须绘制清晰的边界,你的系统在哪里(所谓的SuT,被测系统)以及外部各方在哪里。

因为:

非常重要
  • SuT是您在测试期间要与之交互的东西(即您的Rack应用程序);
  • 外部派对将被嘲笑(即外部Web服务,......可能会令人惊讶,其他库,如OAuth,SQL驱动程序等)。

这意味着,如果您尝试将WebMock用于您的应用程序的任何部分(由于有关模拟相对URL的问题,它看起来就像您正在做的那样),显然做错了。

更接近你的任务,如果我是你,我会:

  1. 选择一个经过良好测试的优秀OAuth库并将其放入应用程序中。
  2. 在测试方面,只需使用我自己的简单存根对象而不是真正的OAuth实现类。这将把重点转移到测试我的服务实现的行为上。验证OAuth库实际上是一项双重工作,因为它已经被作者所覆盖。
  3. 希望这有帮助!