1
我正在为我的类写一个单元测试,它从stdin读取输入。在单元测试中,我希望我可以将stdin流重定向到一个字符串。
我该如何做到这一点?
我正在为我的类写一个单元测试,它从stdin读取输入。在单元测试中,我希望我可以将stdin流重定向到一个字符串。
我该如何做到这一点?
要回答你的文字问题:不像不断STDIN
,$stdin
仅仅是一个全局变量,你可以用另一个IO对象替换:
require 'stringio'
$stdin = StringIO.new("foo\nbar")
2.times { puts gets }
# => foo
# => bar
但它可能是一个更好的主意,用适当的嘲讽而不是框架,例如this。