【发布时间】:2013-07-30 13:06:19
【问题描述】:
我只是有点困惑为什么我不能在我的控制器规范中存根局部变量。
这是我的控制器:
Class UsersController < ApplicationController
...
def get_company
resp = Net::HTTP.get("http://get_company_from_user_id.com/#{params[:id]}.json")
@resp = JSON.parse(resp.body)
...
我的规格如下:
class ResponseHelper
def initialize(body)
@body = body
end
end
describe "Get company" do
it "returns successful response" do
stub_resp_body = '{"company": "example"}'
stub_resp = ResponseHelper.new(stub_resp_body)
controller.stub!(:resp).and_return(stub_resp)
get :get_company, {:id => @test_user.id}
expect(response.status).to eq(200)
end
end
我仍然收到一条错误消息:
Errno::ECONNREFUSED:
Connection refused - connect(2)
我做错了什么?如果我要存根 resp 变量,为什么它仍在尝试执行 HTTP 请求?在这种情况下我将如何存根 resp 变量?
【问题讨论】:
-
未回答问题,但字符串插值不适用于单引号字符串。
-
我建议使用 WebMock github.com/bblimke/webmock 而不是存根 Net::HTTP