2015-10-14 3 views
1

Я пишу модульный тест для своего класса, который считывает данные из stdin. В модульных тестах я надеюсь, что могу перенаправить поток stdin в строку.

Как я могу это достичь?

ответ

2

Чтобы ответить на ваш буквального вопрос: в отличие от постоянного STDIN, $stdin просто глобальная переменная, вы можете заменить его на другой объект IO:

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

Но это, вероятно, лучше использовать правильную насмешливый вместо этого, например, this.

Смежные вопросы