1
Я пишу модульный тест для своего класса, который считывает данные из stdin. В модульных тестах я надеюсь, что могу перенаправить поток stdin в строку.
Как я могу это достичь?
Я пишу модульный тест для своего класса, который считывает данные из stdin. В модульных тестах я надеюсь, что могу перенаправить поток stdin в строку.
Как я могу это достичь?
Чтобы ответить на ваш буквального вопрос: в отличие от постоянного STDIN
, $stdin
просто глобальная переменная, вы можете заменить его на другой объект IO:
require 'stringio'
$stdin = StringIO.new("foo\nbar")
2.times { puts gets }
# => foo
# => bar
Но это, вероятно, лучше использовать правильную насмешливый вместо этого, например, this.