【问题标题】:How to mock an object and it's properties in rspec如何在 rspec 中模拟对象及其属性
【发布时间】:2015-05-28 15:00:24
【问题描述】:

我正在尝试测试下载文件的控制器操作。

def download_file(url)
  response = Net::HTTP.get_response(URI(url))
  if response.code == '200'
    return response.body
  end
end

在阅读 rspec 时,我发现我可以创建一个对象的 double 并存根它的方法。但是,我似乎无法弄清楚如何模拟它的属性。那么对于这个测试,我如何模拟从 get_response 调用返回的响应以具有 code 和 body 属性?我已经尝试过了,但它不起作用。相反,我会返回零。

it 'calls Net::HTTP.get_response which returns a response' do
    @netresponse = double("response", {:body => 'this is a test', :code => 200})
    @url = 'http://www.google.com'
    allow(Net::HTTP).to receive(:get_response).and_return(@netresponse)
    return_value = controller.download_file(@url)
    expect(return_value).to eq('this is a test')
end

【问题讨论】:

    标签: ruby-on-rails-4 rspec rspec3


    【解决方案1】:

    您正在使用整数存根 code,但实现与字符串进行比较。

    【讨论】:

    • 哇,我怎么错过了?;)谢谢!
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-01-12
    • 2015-12-26
    • 1970-01-01
    • 1970-01-01
    • 2020-06-20
    • 2013-09-29
    相关资源
    最近更新 更多