我正在测试一个使用puts和gets来启动一个小脚本的初始化方法。
以下是代码:
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
在init方法中调用gets时,它实际上会抛出一个错误。有没有办法简单地存根这些方法?或者我应该重构代码以使用已接受的STDOUT和STDIN,并简单地存根这些对象?
答案 0 :(得分:2)
考虑哪个对象正在接收gets
方法调用。您似乎直接在XmlParser
上调用它,因为如果我正确理解您的self
方法,那就是init
。
那么,这有用吗?
XmlParser.stub(:gets).and_return('')