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