解决 webmock 报错 Unregistered request: POST

3 minute read

一句话总结:使用 gem 之前请看说明书😂


问题

以前项目用 fakeweb 来模拟外部 API 调用,但 fakeweb 很久没维护了,所以这次找了个更多 star 而且有维护的 gem——webmock

但是,一开波就报错了

Failure/Error: expect { client.perform_post(path + 'something_else', 'xml_body') }.not_to raise_error

       expected no Exception, got #<WebMock::NetConnectNotAllowedError: Real HTTP connections are disabled. Unregistered request: POST ..._api").
         with(
           body: "xml_body")

解决

原因正如 这个 issue 说的,stub_request 和发起请求的地址对不上。。。

stub_request(:post, 'A 地址').with(body: '请求 body').to_return(
	body: "返回 body",
    status: 400,
)
response = Net::HTTP.post('一定也要是 A 地址,差一点都不行')
expect(response.code).to eq '400'
expect(response.body).to eq "返回 body"

Refernece

WebMock::NetConnectNotAllowedError: Real HTTP connections are disabled. Unregistered request: POST with NET::GTTP #584

webmock