我试着把WebMock.disable_net_connect!
放在很多地方,但正如上次测试中推荐的那样,我把它放在spec_helper.rb
中,如下所示:
require 'webmock/rspec'
WebMock.disable_net_connect!(allow_localhost: true)
我的规格如下:
describe Client do
describe '#get_something' do
context 'when post params are valid' do
it 'returns a response' do
request = stub_request(:post, 'https://myurl.com')
.to_return(my_response)
result = client.get_something(params)
expect(WebMock).to have_requested(:post, 'https://myurl.com')
end
end
end
end
嗯,当然是我的客户打电话来的:
class Client
def get_something(params)
RestClient.post @url, params
end
end
它失败,并显示以下消息:
Failure/Error: end
The request GET https://myurl.com/ was expected to execute 1 time but it executed 0 times
The following requests were made:
No requests were made.
============================================================
我使用的是rails 4.1.8、rspec 3.1.7、rspecrails3.1.0和webmock 1.8.11。现在,我正在创建一个http_客户端的模拟,以使工作正常进行,但是,这里的任何帮助都将不胜感激!如果你需要更多的信息,请告诉我!
最佳答案
你应该用这个代替:WebMock.allow_net_connect!
或者,你也可以WebMock.disable_net_connect(allow: ['https://myurl.com'])
如WebMock文档所示:
WebMock.allow_net_connect!
stub_request(:any, "www.example.com").to_return(:body => "abc")
Net::HTTP.get('www.example.com', '/') # ===> "abc"
关于ruby-on-rails - WebMock.disable_net_connect!不适用于rspec(无VCR),我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36324438/