Я использую Yeoman и generator-angular для управления приложениями AngularJS, но у меня возникают проблемы с автоматическим тестированием.
Запуск grunt test
запустит модульные тесты один раз. Я могу запустить тесты E2E после модульных тестов, изменив блок конфигурации karma в Gruntfile.js
, добавив e2e:
karma: {
//...
e2e: {
configFile: 'karma-e2e.conf.js',
singleRun: true
}
},
Отлично: теперь, когда я набираю grunt test
, все тесты запускаются. Но они запускаются только один раз, и есть большие накладные расходы (запуск компаса, запуск сервера, запуск процессов Chrome и т. д.). Вместо этого процессы сервера и Chrome должны оставаться запущенными, и при сохранении теста тесты должны запускаться повторно.
Я могу добиться этого, изменив karma.conf.js
и karma-e2e.conf.js
и установив singleRun = true
, затем запустив karma start
в одной панели терминала и karma start karma-e2e.conf.js
в другой. Если ни один из портов в конфигурации кармы не конфликтует (что они делают по умолчанию), это работает. Теперь я обхожу Grunt и просто занимаюсь своими делами (что кажется немного глупым, так как Grunt должен упростить задачу).
В любом случае, после еще нескольких изменений (исправлений?) — для краткости не подробно — это работает, но не работает: теперь мне нужно запустить две разные команды и следить за двумя разными панелями терминала. Наверняка есть лучший способ.
Как я могу запустить одну команду для просмотра моих тестовых файлов и повторного запуска тестов соответствующим образом?
Бонусный вопрос: почему эта функциональность не предоставляется как есть? Это просто вопрос того, что у разработчика (ов) генератора-углового не хватает времени для реализации этого материала? Я спрашиваю, потому что я только начинаю изучать Angular/Yeoman/Karma (как вы, наверное, заметили) и чувствую, что автоматическое тестирование как E2E, так и модульных тестов имеет решающее значение для рабочего процесса.