在Ruby中将$ stdin重定向到字符串

时间:2015-10-14 00:14:24

标签: ruby stdin

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

我怎样才能做到这一点?

1 个答案:

答案 0 :(得分:2)

回答你的文字问题:与常量STDIN不同,$stdin只是一个全局变量,你可以用另一个IO对象替换它:

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

但是,使用适当的模拟框架可能更好一点,例如像this