Ruby-on-Rails,Net::HTTPResponse NoMethodError:未定义的方法“已关闭?” 对于零:NilClass
您好,我遇到了一个问题:我使用 RSpec 框架,我需要在我测试的方法中模拟响应。
这是该方法的示例:
def perform_request
response = DataClient.new.request(arg: 'some_arg')
# do some thing with the response
end
RSpec file:
describe '#perform_request'
let(:response) do
Net::HTTPResponse.new(1.0, 200, "OK")
end
let(:double_response) {double('DataClient', request: response)}
before do
response.body = {some_key:some_value}.to_json
allow(DataClient).to receive(:new).and_return(double_response)
end
it 'returns a response body' do
MyClass.new.perform_request
expect(response.body).to eq({some_key:some_value}.to_json)
end
end
Run Code Online (Sandbox Code Playgroud)
当我尝试调用 Net::HTTPResponse 实例的“body”方法来读取它的主体时,就会出现问题。
它抛出 NoMethodError 和消息“未定义的方法`关闭?' 对于 nil:NilClass" 我不知道。
我试图搜索任何带有问题变体的解释,例如“Net::HTTPResponse body undefined method closed?'', 'Ruby Net:: HTTPResponse body undefined methodclosed?”、“Ruby undefined method `closed?” 但找不到任何相关的答案。
事先,我不得不说除了没有任何包装器的 …