在grunt上运行Karma时警告'API接口已更改'

时间:2015-07-16 04:56:16

标签: javascript angularjs node.js karma-runner

当从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.

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

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

这是我目前正在使用的版本:

  • Karma 0.13.0
  • Grunt 0.4.5
  • grunt-cli 0.1.13
  • node.js 0.12.7
  • npm 2.11.3

该项目是使用自耕农(1.4.7)生成的,但我在一个单独的项目中使用Karma也有同样的问题,只有茉莉,业力和Grunt(也用Gulp测试过)。

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

4 个答案:

答案 0 :(得分:5)

他们在这里换了新版本:

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()

答案 1 :(得分:4)

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

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

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

答案 2 :(得分:0)

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

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

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

或将业力版本推回0.10.0以使其正常运行。目前,gulp-karma上没有拉取请求来更改其工作方式,但不确定将来是否会发生变化。

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

答案 3 :(得分:-1)

如果您像我一样使用Yeoman的生成器角度,您需要在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));放在它正上方就可以了。