Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Ruby: Общие вопросы > Переопределение стандартного потока ввода


Автор: 3test 15.1.2010, 15:29
Мне нужно написать тест для метода, который читает данные с стандартного потока ввода. Хотелось бы передать в тесте свои данные.

Я нашел, что переопределить поток можно так:

Код


class Simple

    $stdin = StringIO.new("Test string")
    s = gets
    puts s

end

в таком случае, как и ожидалось выведет Test string.

Но, если попробовать такой прием в  unit тесте:
Код

require "test/unit"
class SimpleTest < Test::Unit::TestCase
  
  
  def test_read
    $stdin = StringIO.new("Test string")
    s = gets
    puts s
  end
end
    

то выведет, почему-то, require "test/unit"

Такое впечатление, что стандартный поток переопределен где-то в Test::Unit::TestCase, что он читает файл c кодом скрипта. Может кто-то объяснить в чем причина и как в моем случае можно переопределить поток ввода?

Автор: 3test 15.1.2010, 19:39
Это видно какой-то момент с IDE Aptana RadRails, т.к. перепроверил код в RubyMine 2.0 и там такой проблемы не было.

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)