我知道 Karma 有一个内置autoWatch
选项,可以在测试文件更改时重新运行我的测试:
var server = new karmaServer({
autoWatch: true,
autoWatchBatchDelay: 250,
});
server.start();
有没有办法手动触发此重新运行?我希望能够更好地控制我的测试何时重新运行。
我知道 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()
,它会触发一个已经在运行的服务器(例如,您在不同的命令窗口中启动的 Karma 服务器)重新运行它的测试。在我的 gulp 任务中,我现在做这样的事情:
gulp.task('run-tests', function() {
gulp.watch('/glob/to/my/files').on('change', function() {
karma.runner.run({ configFile: 'karma.conf.js' });
});
});
请注意,如果您从生成 Karma 服务器的同一进程运行此任务,您将看到重复的测试结果,因为服务器和运行程序都将它们的结果报告给命令行。要仅显示一组测试结果,您可以使用类似这样的方式在后台进程中启动 Karma服务器。