Disable rest-client output on minitest

321 views Asked by At

I've searched for this, but without success.

I have some tests (minitest) that use RestClient and Webmock. When passing for those tests I always have the request logged, polluting the test ouput:

[$] 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

Is there a way to disable this ?

[EDIT]

Just to add, if I call the same address using ruby URL I have nothing logged (even using webmock) so it really is something related with Rest-client.

I already tried to set the ENV['RESTCLIENT_LOG'] variable, but without success.

1

There are 1 answers

1
ehoffmann On BEST ANSWER

What about:

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

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

You have many other options to redirect the log output:

  • In your test_helper.rb:

    RestClient.log = 'tmp/test.log'
    

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

  • From the command line:

    RESTCLIENT_LOG=tmp/restclient.log bundle exec rails test
    

In last resort you could monkey patch:

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