2015-05-28 9 views
0

У меня есть действие контроллера, которое я пытаюсь проверить, загружая файл.Как издеваться над объектом и его свойствами в 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 

ответ

0

Вы гася code с целым числом, но реализация сравнивает против строки.

+0

Вау, как я пропустил это ?;) Спасибо! –