将$stdin重定向到Ruby中的字符串
我正在为我的类编写一个单元测试,它从stdin读取输入。在单元测试中,我希望可以将stdin流重定向到字符串将$stdin重定向到Ruby中的字符串,ruby,stdin,Ruby,Stdin,我正在为我的类编写一个单元测试,它从stdin读取输入。在单元测试中,我希望可以将stdin流重定向到字符串 如何实现这一点?回答您的字面问题:与常量STDIN不同,$STDIN只是一个全局变量,您可以用另一个IO对象替换它: require 'stringio' $stdin = StringIO.new("foo\nbar") 2.times { puts gets } # => foo # => bar 但是使用一个合适的模拟框架可能是一个更好的主意,例如
如何实现这一点?回答您的字面问题:与常量
STDIN
不同,$STDIN
只是一个全局变量,您可以用另一个IO对象替换它:
require 'stringio'
$stdin = StringIO.new("foo\nbar")
2.times { puts gets }
# => foo
# => bar
但是使用一个合适的模拟框架可能是一个更好的主意,例如