问题标签 [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.
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 复制空主体的实际响应?
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
?如果是,那么如何?
ruby-on-rails - 如何正确复制 HTTParty 请求对 webmock 存根的响应的响应主体
我有一个HTTParty
请求,回复形式如下:
我需要在我的Rspec
测试中使用 web-mock 来存根这个请求。这就是我所做的:
但我得到了错误:
如何body
为我的 webmock 存根编写代码以获取响应的副本?
谢谢。
rspec - 将多个请求存根到同一个 uri
我想使用具有不同请求参数的相同 uri,我该怎么做?以下示例似乎不起作用(
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]
来匹配method
and uri
。由于第一个“Hello, world”和第二个基本相同,这条规则是否会产生我的误报?我关闭了重复,所以我希望两个单独的请求必须在磁带中,否则测试会失败。
我错过了什么?
ruby-on-rails - 使用 WebMock 进行 Rails Rspec 测试。如果不是生产环境,存根类初始化?
我是测试新手,在测试外部依赖响应时遇到了一些问题。
我的用例是我有一个 gem Foo,它根据传入的数据发回一些数据。我在初始化类 FooBar 时使用这个 gem。其代码与此类似:
我希望能够在我的 rails 测试环境中存根 FooBar 的类初始化,但允许在我的生产环境中处理外部请求。在我的测试环境中,我只想传回具有预先提供的值的 FooBar 实例。现在我只是想传回一个字符串。
我正在尝试使用 WebMock gem 来对 FooBar 的初始化进行存根:
在我的 spec_helper 文件中,我的测试检查了 FooBar 的初始化是否等于“存根”。它抛出的具体错误是:
我有什么明显的遗漏吗?
ruby-on-rails - 针对 XML 请求的 Rails WebMock
我很难弄清楚如何使用 webmock 将 stub_request 与 XML 请求匹配。
要求:
我试过的存根:
或者
(ETC。)
失败了。
任何人?
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 方式,但似乎更容易阅读/理解存根是如何工作的。
ruby-on-rails - 无法存根对 Flickr API 的请求
我无法为我的控制器测试存根对 Flickr API 的请求。我使用 gem 'flickraw' 从 Flickr API 获取数据。
flickr_search_controller.rb:
flickr_search_controller_spec.rb:
最后我进入控制台下一个错误:
有人知道我该如何存根这个请求吗?
ruby-on-rails - FactoryGirl 与 webmock 一起使用
我的工厂有一个url
字段(用于获取 youtube 嵌入式视频):
在我的测试中,我试图模拟对 youtube 的请求。我在我的中添加了以下内容spec_helper
:
在 rspec 配置中注册一次 webmock 是否足以使存根在整个测试套件中可用?为什么我必须对我的工厂这样做:
没有after(:build)
,我会收到以下错误:
失败/错误:create(:commercial, WebMock::NetConnectNotAllowedError: Real HTTP 连接被禁用。未注册的请求:...告诉我有关未注册的 youtube 请求以及我应该如何存根它...