【发布时间】:2015-10-14 00:14:23
【问题描述】:
我正在为我的班级编写一个从标准输入读取输入的单元测试。在单元测试中,我希望我可以将标准输入流重定向到一个字符串。
我怎样才能做到这一点?
【问题讨论】:
我正在为我的班级编写一个从标准输入读取输入的单元测试。在单元测试中,我希望我可以将标准输入流重定向到一个字符串。
我怎样才能做到这一点?
【问题讨论】:
回答您的字面问题:与常量STDIN 不同,$stdin 只是一个全局变量,您可以将其替换为另一个 IO 对象:
require 'stringio'
$stdin = StringIO.new("foo\nbar")
2.times { puts gets }
# => foo
# => bar
但使用适当的模拟框架可能是一个更好的主意,例如this。
【讨论】: