Я тестирую метод инициализации, который использует как put, так и get для запуска небольшого скрипта.
Вот код:
def init
puts 'type xml file name'
@xml_name = gets.chomp
f = File.open(@xml_name)
doc = Nokogiri::XML(f)
f.close
build_headers(doc)
end
Вот код теста:
describe XmlParser do
describe "init" do
before(:each) do
stub!(:gets).and_return('')
stub!(:puts)
end
it "should give a greeting message 'type xml file name'" do
XmlParser.stub!(:build_headers).with(nil)
should_receive(:puts).with('type xml file name')
XmlParser::init
end
end
end
По сути, выдает ошибку, когда get вызывается в методе init. Есть ли способ просто заглушить эти методы? Или я должен рефакторинг кода, чтобы использовать принятые STDOUT и STDIN, и просто заглушить эти объекты?