在 minitest 上禁用 rest-client 输出

Disable rest-client output on minitest

我搜索过这个,但没有成功。

我有一些使用 RestClient 和 Webmock 的测试 (minitest)。通过这些测试时,我总是记录请求,污染测试输出:

[$] rake                                                                                                 

Run options: --seed 60435

Running:
.........................................................RestClient.get "http://example.com/some_controller/some_action?userLocale=fr_FR", "Accept"=>"*/*", "Accept-Encoding"=>"gzip, deflate", "User-Agent"=>"rest-client/2.0.0 (darwin14.1.0 x86_64) ruby/2.2.1p85" # => 200 OK |  4 bytes

有没有办法禁用它?

[编辑]

补充一下,如果我使用 ruby URL 调用相同的地址,我没有任何记录(即使使用 webmock)所以它确实与 Rest-client 相关。

我已经尝试设置 ENV['RESTCLIENT_LOG'] 变量,但没有成功。

怎么样:

RestClient.stub :log, '' do
  # Your test code here
end

http://www.rubydoc.info/gems/minitest/4.2.0/Object:stub

您有许多其他选项来重定向日志输出:

  • 在你的 test_helper.rb:

    RestClient.log = 'tmp/test.log'
    

http://www.rubydoc.info/gems/rest-client/1.8.0/RestClient.log=

  • 从命令行:

    RESTCLIENT_LOG=tmp/restclient.log bundle exec rails test
    

不得已的情况下你可以使用猴子补丁:

# test_helper.rb
RestClient.class_eval do
  def self.log
    ''
  end
end