Как выполнить модульное тестирование функций в скрипте ruby ​​без запуска скрипта - PullRequest
2 голосов
/ 12 октября 2010

Если у вас есть скрипт ruby ​​с кучей функций, как вы можете протестировать функции в скрипте без запуска самого скрипта? Здесь является примером сценария, а здесь является его модульным тестом.

Например, использование require или load в моем модульном тесте приводит к выполнению сценария перед тестамивыполнить.У меня есть много таких сценариев, и я действительно предпочитаю, чтобы они оставались неизменными.

Полагаю, я мог бы загрузить файл в виде строки, нарезать его в памяти и запустить eval - если это возможно, это выглядит как ужасное решение.

Любые мысли или предлагаемые стратегии будут очень полезныоценены.

Ответы [ 2 ]

9 голосов
/ 12 октября 2010

Обычно вы помещаете последние строки, фактически выполняющие скрипт, в guard , например:

if $0 == __FILE__
  # do stuff
end

, т.е. если первый аргумент этот файл , тогдаон запускается как скрипт, и «вещи» будут выполнены;в противном случае будут загружены только определения методов.

1 голос
/ 12 октября 2010

Что мне нравится делать, так это ограничивать исполняемую часть не чем иным, как созданием экземпляра объекта или даже просто вызовом метода класса (возможно, передачей аргументов строки cmd).Затем напишите класс или серию методов класса, которые будут вызываться сценарием, но могут тестироваться отдельно и по отдельности.

Это упрощает TDD и позволяет повторно использовать его в других местах.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...