2015-09-15 5 views
1

У меня есть сценарий, который я хочу запустить в некоторых тестах с помощью RSpec, что я хочу проверить вход/выход.Функциональный тест для командной строки Ruby/RSpec

Например,

У меня есть сценарий «script.rb», что я бегу с помощью «рубиновый» script.rb

Скрипт затем выводит на STDOUT и принимает входной сигнал с помощью STDIN. Я хочу проверить это с помощью RSPec и проверить, что все работает надлежащим образом (тест функции). Как мне это сделать? Просто выполните «ruby script.rb» в RSPec, а затем проверьте, что результат - это то, что я ожидаю, и что он принимает данные от STDIN?

ответ

0

Поскольку вы хотите протестировать свой скрипт как черный ящик (только STDIN/STDOUT), вы можете это сделать с помощью вызова system(): просто убедитесь, что очистили все побочные эффекты, которые уходит ваш скрипт (например, временные файлы).

EDIT: Просто создайте файл с необходимым содержанием, скажем stdin.txt.

После этого вы можете запустить команду, таким образом:

system('cat stdin.txt | ruby myscript.rb') 
+0

ОК, есть способ фальсифицировать для стандартного ввода получает вызовы к сценарию, поэтому я не придется вручную иметь входной тестер что-нибудь? аналогично методу fill_in в capybara для веб-запросов – noname

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