问题标签 [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 投票
1 回答
295 浏览

logging - 如何禁用 webmocks 日志记录?

我正在使用 webmock 进行我的 rspec 测试之一,每当我运行测试套件时,我都会在运行过程中看到类似于 webmock 的日志记录语句:

...我,[2016-03-17T09:31:50.735555 #16878] 信息——:发布https://test.example.com/services/oauth2/token

D,[2016-03-17T09:31:50.735618 #16878] 调试 -- 请求:用户代理:“法拉第 v0.9.2” 内容类型:“应用程序/x-www-form-urlencoded”

我,[2016-03-17T09:31:50.748981 #16878] 信息——状态:200

D,[2016-03-17T09:31:50.749035 #16878] 调试——响应:...

我找不到任何配置,也找不到将记录器更改为空记录器的方法。如何关闭这些消息?

0 投票
1 回答
617 浏览

ruby-on-rails - 带有持久 HTTPClient 的 Rails gem 中的存根请求

我正在尝试编写一个 RSpec 测试,使用 Boxr gem ( https://github.com/cburnette/boxr ) 对 api.box.com 的请求进行存根。我创建了一个存根,它使用 #to_rack 方法转到一个假 Box 类

和我的 FakeBox 课程:

每当我调用Net::HTTP.get('https://api.box.com/oauth2/token')HTTPClient.new.post(...)直接在控制器或测试方法中都会触发这个假动作。

Boxr::get_tokens(params[:code]) 但是,当我调用我在 Boxr gem 本身中放置一个调试器时,它不会被触发:

BOX_CLIENT 在这里定义:

当调试器被触发时,我得到的响应显示BOX_CLIENT.post(uri, body: body)访问了该站点并在我期望它触发模拟时返回了一个错误。在该断点处的调试控制台中,我进入HTTPClient.new.post(uri, body: body)并得到了我期望的存根响应。

当我进入HTTPClient.new.class调试器控制台时,我得到:WebMockHTTPClient。BOX_CLIENT.class-> HTTP客户端。这似乎是我问题的根源。

我无法修改宝石。有谁知道如何解决这个问题?

0 投票
1 回答
4522 浏览

ruby-on-rails - WebMock.disable_net_connect!不使用 rspec(无 VCR)

我试图放在WebMock.disable_net_connect!很多地方,但按照我上次测试中的建议,我把它放在spec_helper.rb这样的地方:

我的规格如下:

嗯,当然是我的客户打来的电话:

它失败并显示此消息:

我正在使用 rails 4.1.8、rspec 3.1.7、rspec-rails 3.1.0 和 webmock 1.8.11。现在,我正在创建一个 http_client 的模拟来让事情正常工作,但是,这里的任何帮助都将不胜感激!如果您需要更多信息,请告诉我!

0 投票
1 回答
4614 浏览

ruby-on-rails - WebMock stub_request 不工作

在我的 rails 项目中,其中一个初始化程序请求并从S3.

这打破了使用webmockgem的 rspec 测试套件



尝试运行测试套件时出现以下错误

添加此存根不会修复错误。事实上,添加以下任何内容似乎都不会做出任何改变:


我在这里想念什么?错误消息中的详细标头在这里似乎没有意义,以允许各种请求S3

编辑:

我只是注意到添加WebMock.disable!spec_helper也不会导致任何变化。我没有将存根添加到正确的位置吗?如果不在,应该在哪里添加spec_helper

0 投票
1 回答
1106 浏览

ruby - 带有承载授权标头的 stub_request 在 webmock 2 中不起作用

以下代码适用于 webmock 1.20.4 但不适用于 2.0.1

这是我正在存根的代码。

从 stub_request使用assert_requested :get, "http://www.myapi.com/my-endpoint", :headers => {'Authorization' => "Bearer fake_oauth_token"}, :times => 1和删除标头我从断言中获得以下输出。

有没有办法让 stub_request 代码与 webmock 2 一起工作?

0 投票
1 回答
3010 浏览

ruby - 使用 RSpec/webmock 对各种状态码的请求存根

我需要使用 webmock/webmock 对外部 API 的请求存根,但我需要测试少数响应(200、404、503 等)。干净地做到这一点的最佳方法是什么?我的第一个 hacky 想法是你可以在标题中设置一些独特的东西,比如一个唯一的 User-Agent 字符串,以键入,但它导致我编写像这样的糟糕代码:

我看过 VCR,但据我了解,很难用它来模拟和捕获错误。是否有另一种简洁明了的方法来消除对多个响应代码的请求?谢谢!

0 投票
1 回答
2462 浏览

ruby-on-rails - 如何在域或之后的方法上存根请求?

我目前正在为发送 SMS 并在我们的数据库中创建它的日志的服务类编写规范。我正在尝试存根此请求,但@text.sms_uid它是一个SecureRandom.urlsafe_base64随机代码。我也在打架config.before(:each)

因此,我无法指定sms_uidin,因为在调用存根后会生成stub_request随机数。sms_uid这会导致测试每次都失败。有没有一种方法可以在生成代码后(换句话说,在它通过特定方法之后)存根请求,或者有没有办法存根通过域的所有请求“ https://api.silverstreet.com “?

0 投票
3 回答
1805 浏览

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

Octokit 响应的类型为Sawyer::Response

它们看起来像这样:

我试图像这样存根我的请求

然后在我的代码中调用 response.content,因此我希望能够从响应中获取内容。

我目前收到错误:'WebMock::Response::InvalidBody: 必须是以下之一:[Proc、IO、路径名、字符串、数组]。'哈希'给出'。response_body 的正确格式是什么?如果我把它变成一个 json,我就不能在我的代码中对对象做 response.content。

0 投票
1 回答
1814 浏览

ruby-on-rails - RSpec 和 WebMock:忽略请求

当我运行测试时,我收到一个错误:

这就是我为解决这个问题所做的:

spec_helper.rb:

但是我仍然继续收到此错误,也许有人有解决方法的想法?

UPD:我想使用webmockgem 为 api 请求编写规范。但我不需要请求travis-ci并希望将这些请求添加到“忽略”。

0 投票
1 回答
1646 浏览

ruby-on-rails - Rails webmock 存根 localhost api 调用

我有一个控制器,它有一个post_review调用 Rest Client API 调用的操作。

document_manual_result是一个记录方法,delete_relavent_review_queue是一个回调类型的方法,它将删除该项目。

我已经编写了几个测试来测试 post_review 操作的副作用,即它记录了我已经发送了结果(又名:)response_body并且我删除了另一个对象。

在我打开测试之前RestClient,测试工作正常,但现在休息客户端正在执行它打破了规范。我想只存根rest_client.execute控制器操作的一部分,以便测试该方法的其他副作用。我有它指向的 URL,localhost:3001所以我尝试了:

我在我的 before 块中使用了它,它没有做任何事情,我在实际测试中尝试了它,在我post :post_review, @params和 Webmock 似乎什么都不做之前。我认为 webmock 所做的是,它正在侦听对特定 URL 发出的任何请求,并默认返回成功或您指定的选项块。我不确定我是否正确使用它。