2015-10-14 48 views
1

我正在为我的类写一个单元测试,它从stdin读取输入。在单元测试中,我希望我可以将stdin流重定向到一个字符串。

我该如何做到这一点?

回答

2

要回答你的文字问题:不像不断STDIN$stdin仅仅是一个全局变量,你可以用另一个IO对象替换:

require 'stringio' 
$stdin = StringIO.new("foo\nbar") 
2.times { puts gets } 
# => foo 
# => bar 

但它可能是一个更好的主意,用适当的嘲讽而不是框架,例如this