小编Tim*_*oss的帖子

ruby (rails) Net::HTTPResponse 未定义的方法已关闭?

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?” 但找不到任何相关的答案。

事先,我不得不说除了没有任何包装器的 …

ruby rspec ruby-on-rails net-http

5
推荐指数
1
解决办法
2020
查看次数

标签 统计

net-http ×1

rspec ×1

ruby ×1

ruby-on-rails ×1