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

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

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

1 Ответ

9 голосов
/ 06 августа 2011

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

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

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

...