Использование Rspec 2 для тестирования уровня пользовательского интерфейса приложения командной строки

Я пишу приложение командной строки на Ruby. Я довольно хорошо знаком с Rspec 2, так как он используется в некоторых приложениях Rails, над которыми я работаю. Я пишу приложение командной строки и пытаюсь использовать Rspec 2 для BDD.

Как я могу протестировать уровень пользовательского интерфейса моего приложения? Мне нужно дать приложению интерактивный ввод или проверить определенный вывод, напечатанный с помощью puts. Кроме того, есть ли способ подавить вывод STDOUT? Когда я запускаю автотест, вывод моего приложения печатается между выводами состояния rspec, что делает его чрезвычайно трудным для чтения.


person sensae    schedule 06.08.2011    source источник


Ответы (1)


Вот пример, который должен вам помочь. Я использую его в одном из своих приложений, которое тестирую с помощью Minitest, но его должно быть легко перевести на Rspec.

def setup
  $stdout = StringIO.new
  ...
end

Это избавляет от вывода приложения между результатами теста, поскольку стандартный вывод будет записан в StringIO. Таким же образом вы также можете проверить, было ли выведено что-то конкретное, поскольку вы можете проверить объект StringIO на соответствие регулярным выражениям.

person Michael Kohl    schedule 06.08.2011
comment
Это именно то, что мне было нужно! Спасибо. - person sensae; 07.08.2011