Вручную вызвать карму, чтобы повторить тесты

Я знаю, что Карма имеет встроенную autoWatch опция, которая приведет к повторному запуску моих тестов при изменении файла теста:

var server = new karmaServer({
    autoWatch: true,
    autoWatchBatchDelay: 250,
});
server.start();

Есть ли способ запустить этот перезапуск вручную? Я хотел бы иметь больше контроля над при повторном запуске моих тестов.

2 ответа

Решение

Я узнал немного больше о карме и обнаружил karma.runner.run(), который запускает уже запущенный сервер (например, сервер Karma, который вы запускали в другом командном окне) для повторного запуска своих тестов. В моем задании глотка я теперь делаю что-то вроде этого:

gulp.task('run-tests', function() {
    gulp.watch('/glob/to/my/files').on('change', function() {
        karma.runner.run({ configFile: 'karma.conf.js' });
    });    
});

Обратите внимание, что если вы запустите эту задачу из того же процесса, который породил ваш сервер Karma, вы увидите дублированные результаты теста, поскольку и сервер, и бегун сообщают свои результаты в командную строку. Чтобы показать только один набор результатов тестирования, вы можете запустить сервер Karma в фоновом режиме, используя что-то вроде этого.

Если вам нужно запустить его вручную с помощью gulp, просто создайте из него задачу (я предполагаю, что вы хотите перезапустить server.start):

var server = new karmaServer({
 autoWatch: true,
 autoWatchBatchDelay: 250,
});

gulp.task('runTests', function() {
 server.start(); 
});

И тогда всякий раз, когда вам нужно запустить тест, запустите в командной строке:

gulp runTests 
Другие вопросы по тегам