如何在 rspec 中模拟对象及其属性
How to mock an object and it's properties in rspec
我有一个正在尝试测试的控制器操作,用于下载文件。
def download_file(url)
response = Net::HTTP.get_response(URI(url))
if response.code == '200'
return response.body
end
end
在阅读 rspec 时,我发现我可以创建一个对象的双重对象并存根它的方法。但是,我似乎无法弄清楚如何模拟它的属性。因此,对于此测试,我如何模拟从 get_response 调用返回的响应以具有代码和正文 属性?我已经试过了,但没有用。相反,我没有回来。
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
您正在用整数对 code
进行存根,但实现与字符串进行比较。
我有一个正在尝试测试的控制器操作,用于下载文件。
def download_file(url)
response = Net::HTTP.get_response(URI(url))
if response.code == '200'
return response.body
end
end
在阅读 rspec 时,我发现我可以创建一个对象的双重对象并存根它的方法。但是,我似乎无法弄清楚如何模拟它的属性。因此,对于此测试,我如何模拟从 get_response 调用返回的响应以具有代码和正文 属性?我已经试过了,但没有用。相反,我没有回来。
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
您正在用整数对 code
进行存根,但实现与字符串进行比较。