手动触发Karma重新运行测试

时间:2016-03-21 16:04:16

标签: javascript unit-testing gulp karma-runner gulp-karma

我知道Karma有一个内置的autoWatch选项,可以在测试文件发生变化时重新运行我的测试:

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

有没有办法手动触发此重新运行?我希望能够更好地控制我的测试重新运行的时间。

2 个答案:

答案 0 :(得分:0)

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

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

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

然后,只要您需要运行测试,请在命令行中运行:

gulp runTests 

答案 1 :(得分:0)

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

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

请注意,如果您从生成Karma服务器的同一进程中运行此任务,您将看到重复的测试结果,因为运行时服务器都会将其结果报告给命令行。要仅显示一组测试结果,您可以使用something like this在后台进程中启动您的Karma服务器。