Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/ruby/25.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
将$stdin重定向到Ruby中的字符串_Ruby_Stdin - Fatal编程技术网

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

将$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流重定向到字符串


如何实现这一点?

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

require 'stringio'
$stdin = StringIO.new("foo\nbar")
2.times { puts gets }
# => foo
# => bar
但是使用一个合适的模拟框架可能是一个更好的主意,例如