2015-10-14 66 views
1

我正在爲我的類寫一個單元測試,它從stdin讀取輸入。在單元測試中,我希望我可以將stdin流重定向到一個字符串。

我該如何做到這一點?

回答

2

要回答你的文字問題:不像不斷STDIN$stdin僅僅是一個全局變量,你可以用另一個IO對象替換:

require 'stringio' 
$stdin = StringIO.new("foo\nbar") 
2.times { puts gets } 
# => foo 
# => bar 

但它可能是一個更好的主意,用適當的嘲諷而不是框架,例如this