警告 'The API interface has changed' when 运行 Karma on grunt

Warning 'The API interface has changed' when running Karma on grunt

当 运行 karma 来自 grunt 任务时,我收到以下警告:

Running "karma:unit" (karma) task
Warning: The api interface has changed. Please use 
  server = new Server(config, [done])
  server.start()
instead. Use --force to continue.

Aborted due to warnings.

我已经用我的配置测试了 运行 karma,都使用 'run' 和 'start' karma 命令,它们似乎工作正常。

使用grunt --force可以完成任务,但完成时出现警告。

这是我目前使用的版本:

项目是使用 yeoman (1.4.7) 生成的,但我在一个单独的项目中使用 Karma 时遇到了同样的问题,只有 jasmine、karma 和 Grunt(也用 Gulp 测试过)。

我搜索了警告消息,但一无所获。我不知道这是否是预期的行为,或者是否有另一种方法可以在没有警告的情况下完成任务。

他们在此处更改了新版本:

https://github.com/karma-runner/karma/blob/master/CHANGELOG.md#breaking-changes

var Server = require('karma').Server;
var config = {
    configFile: path.join(__dirname, '/../karma.conf.js'),
    singleRun: singleRun,
    autoWatch: !singleRun
};

var server = new Server(config, done)
server.start()

如果您像我一样使用 Yeoman 的生成器-angular,则需要在 grunt-karma.js 文件中将其关闭。

替换var server = require(‘karma’).server;

var Server = require('karma').Server;

然后在文件底部的 else 块中而不是 server.start(config, done);

你会发现server.start(data, finished.bind(done));

只需将 var server = new Server(data, finished.bind(done)); 放在它的正上方,它应该可以正常工作。

如果您使用 grunt-karma 插件从 Grunt 启动 Karma 测试,您需要将 package.json 文件中的 grunt-karma 依赖项更新为 0.12 .0:

"devDependencies": {
  ...
  "grunt-karma": "~0.12.0",
  ...
}

grunt-karma 0.12.0 版于今天早些时候发布,它使用了新的API:https://github.com/karma-runner/grunt-karma/releases

我正在使用 Gulp,我必须按如下方式设置我的测试任务:

var Server = require('karma').Server;

gulp.task('test', function (done) {
  new Server({
   configFile: __dirname + '/karma.conf.js',
   singleRun: true
  }, done).start();
});

或将 karma 版本回滚到 0.10.0 以使其正常工作。目前 gulp-karma 上没有更改其工作方式的拉取请求,但不确定将来是否会有更改。

这是在 Karma API 更改后更新的有用示例:https://github.com/karma-runner/gulp-karma