我正在为我的班级编写单元测试,该测试从stdin读取输入。在单元测试中,我希望我可以将stdin流重定向到字符串。
我怎样才能做到这一点?
答案 0 :(得分:2)
回答你的文字问题:与常量STDIN
不同,$stdin
只是一个全局变量,你可以用另一个IO对象替换它:
require 'stringio'
$stdin = StringIO.new("foo\nbar")
2.times { puts gets }
# => foo
# => bar
但是,使用适当的模拟框架可能更好一点,例如像this。