手动触发 Karma 重新运行测试

Manually trigger Karma to rerun tests

我知道 Karma 有一个内置的 autoWatch 选项,它会在测试文件更改时重新运行我的测试:

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

有没有办法手动触发重新运行?我想更好地控制何时重新运行我的测试。

如果您需要使用 gulp 手动 运行 它,只需从中创建一个任务(我假设您想要重新 运行 server.start):

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

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

然后每当你需要运行测试时,运行在命令行中:

gulp runTests 

我了解了更多关于 Karma 的知识并发现了 karma.runner.run(),它触发了一个已经 运行ning 的服务器(例如,您在不同命令中启动的 Karma 服务器 window ) 重新运行 它的测试。在我的 gulp 任务中,我现在做这样的事情:

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

请注意,如果您 运行 从生成您的 Karma 服务器的同一进程执行此任务,您将看到重复的测试结果,因为服务器 运行ner 向命令行报告他们的结果。要仅显示一组测试结果,您可以使用 something like this.

在后台进程中启动 Karma 服务器