问题标签 [webmock]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
0 回答
548 浏览

ruby - 带有空主体的 VCR 磁带返回 nil 而不是空字符串

我有一个 API,我正在尝试编写一些规范并使用 VCR gem 模拟请求。我遇到的问题是,当 API 返回一个空主体时,Ruby 将其解释为一个空字符串。但是,当我使用 VCR 生成磁带来模拟 API 请求时,它会返回nil. 我可以轻松地围绕这个编写代码,将请求修改回空字符串resp = '' if resp.nil?,或者有条件地编写关于如何在时机成熟resp.nil? || resp.empty?或 Active Supports时处理它的代码,#blank?但我宁愿不必编写代码来简单地满足我的规范。

test_spec.rb

vcr_test.yml

在录制磁带之前

录制磁带后

如何让 VCR 复制空主体的实际响应?

0 投票
1 回答
904 浏览

ruby-on-rails - Web 模拟不适用于 Rails 控制器中的 redirect_to

我的控制器有这段代码:

当然,我不想在测试中被重定向到外部网站。所以我决定添加 webmock gem 并添加:

WebMock.disable_net_connect!(allow_localhost: true)

对我的spec_helper.rb.

在我的功能测试中,我有:

当我打电话时,Net::HTTP.get('https://some.api.com/auth/')我得到了回应"DUPA. A nawet DUPA123"。这很酷!这意味着stub_request有效。

问题是当用户单击指向MyController#get重定向发生位置的链接时。它不会存根请求,只是让浏览器重定向到外部应用程序。

是否可以存根来自控制器的请求redirect_to?如果是,那么如何?

0 投票
1 回答
2367 浏览

ruby-on-rails - 如何正确复制 HTTParty 请求对 webmock 存根的响应的响应主体

我有一个HTTParty请求,回复形式如下:

我需要在我的Rspec测试中使用 web-mock 来存根这个请求。这就是我所做的:

但我得到了错误:

如何body为我的 webmock 存根编写代码以获取响应的副本?

谢谢。

0 投票
1 回答
653 浏览

rspec - 将多个请求存根到同一个 uri

我想使用具有不同请求参数的相同 uri,我该怎么做?以下示例似乎不起作用(

0 投票
1 回答
121 浏览

rspec3 - 自定义匹配器或 match_requests_on 是否覆盖重复播放?

我对一些发送 SMS 消息的代码进行了集成测试。

测试发送初始消息,例如“Hello, world”,并使用 VCR 验证对外部 SMS 提供商的调用是通过 HTTP API 进行的。

然后测试模拟通过控制器发送对 SMS 消息的回复。

收到无法辨认的回复后,代码将发送一条消息,例如“抱歉。不计算”。然后重新发送“Hello, world”。

测试寻找发送“Sorry...”的调用,然后寻找重新发送“Hello, world”的调用。

但是,似乎代码没有重新发送第二个“Hello, world”,但测试认为它是,因为第二个expect a_request没有失败。

我正在使用自定义match_requests_on: [:uri, :method]来匹配methodand uri。由于第一个“Hello, world”和第二个基本相同,这条规则是否会产生我的误报?我关闭了重复,所以我希望两个单独的请求必须在磁带中,否则测试会失败。

我错过了什么?

0 投票
1 回答
453 浏览

ruby-on-rails - 使用 WebMock 进行 Rails Rspec 测试。如果不是生产环境,存根类初始化?

我是测试新手,在测试外部依赖响应时遇到了一些问题。

我的用例是我有一个 gem Foo,它根据传入的数据发回一些数据。我在初始化类 FooBar 时使用这个 gem。其代码与此类似:

我希望能够在我的 rails 测试环境中存根 FooBar 的类初始化,但允许在我的生产环境中处理外部请求。在我的测试环境中,我只想传回具有预先提供的值的 FooBar 实例。现在我只是想传回一个字符串。

我正在尝试使用 WebMock gem 来对 FooBar 的初始化进行存根:

在我的 spec_helper 文件中,我的测试检查了 FooBar 的初始化是否等于“存根”。它抛出的具体错误是:

我有什么明显的遗漏吗?

0 投票
1 回答
631 浏览

ruby-on-rails - 针对 XML 请求的 Rails WebMock

我很难弄清楚如何使用 webmock 将 stub_request 与 XML 请求匹配。

要求:

我试过的存根:

或者

(ETC。)

失败了。

任何人?

0 投票
1 回答
998 浏览

ruby-on-rails - 在 Rails 集成测试中存根 3rd 方 API 调用

TwitterAPI定义了一个类,它与 Twitter 的 API 交互。模块中的方法进行两个单独的 API 调用。stub_request因此,我在类的单元测试中的 before 块中定义了两个 WebMock TwitterAPI

我现在正在编写基于 capybara/rspec 的集成测试。一些测试场景涉及使用 Twitter API 数据的页面,例如:

我希望这些集成测试使用与我的单元测试相同的存根数据。所以 stub_requests 将在多个测试之间共享。我是否应该将我定义的 stub_requests 移动到我的rails_helper.rb并拥有某种允许特定测试使用存根的标志?还是我应该将 stub_requests 复制/粘贴到集成测试本身?拥有多个存根请求副本并不是执行此操作的 DRY 方式,但似乎更容易阅读/理解存根是如何工作的。

0 投票
1 回答
108 浏览

ruby-on-rails - 无法存根对 Flickr API 的请求

我无法为我的控制器测试存根对 Flickr API 的请求。我使用 gem 'flickraw' 从 Flickr API 获取数据。

flickr_search_controller.rb:

flickr_search_controller_spec.rb:

最后我进入控制台下一个错误:

有人知道我该如何存根这个请求吗?

0 投票
1 回答
906 浏览

ruby-on-rails - FactoryGirl 与 webmock 一起使用

我的工厂有一个url字段(用于获取 youtube 嵌入式视频):

在我的测试中,我试图模拟对 youtube 的请求。我在我的中添加了以下内容spec_helper

在 rspec 配置中注册一次 webmock 是否足以使存根在整个测试套件中可用?为什么我必须对我的工厂这样做:

没有after(:build),我会收到以下错误:

失败/错误:create(:commercial, WebMock::NetConnectNotAllowedError: Real HTTP 连接被禁用。未注册的请求:...告诉我有关未注册的 youtube 请求以及我应该如何存根它...