【问题标题】:All karma test fails after a while一段时间后,所有业力测试都失败了
【发布时间】:2014-10-28 13:36:09
【问题描述】:

我正在测试 karma 中的 Angular 服务,它一开始可以工作,但一段时间后测试失败,我需要重新启动 karma。

我得到的错误信息是: 错误:[$injector:unpr] 未知提供者:Score2Provider

我使用以下 conf 运行 karma:

module.exports = function(config){
  config.set({

    basePath : './',

    files : [
      'bower_components/angular/angular.js',
      'bower_components/lodash/dist/lodash.js',
      'bower_components/angular-route/angular-route.js',
      'bower_components/angular-mocks/angular-mocks.js',
      'tests/main-mock.js',
      'client/js/score2.js',
      'tests/*.js',
    ],

    autoWatch : true,

    frameworks: ['jasmine'],

    browsers : ['Chrome'],

    plugins : [
            'karma-chrome-launcher',
            'karma-jasmine',
            ],
  });
};

我在 Windows 8.1 机器上运行它。

正如我所说,它起初可以工作,但几分钟后所有测试都失败并显示该错误消息。 有没有其他人遇到过这个问题,有人知道如何解决吗?

【问题讨论】:

  • Score2Provider 在“第二”时间不可用。您如何第二次运行测试?第一次运行和第二次运行有什么区别?
  • 是的,我知道。由于我使用 autoWatch,因此每次更新文件时它都会再次运行。一段时间后它会中断,但如果我重新启动业力它会再次工作,所以我认为这不是我的代码中的错误。就像手表无法正确读取文件一样
  • 我实际上是在建议您设置此方式的问题/您是否使用 Grunt/Gulp ?如果是,请从那里发布相关部分。如果不告诉我们你是如何调用测试的。
  • 我目前没有使用任何构建工具。我只是运行karma start,它会监视我的文件并在测试发生变化时重新运行。
  • 我的猜测是因果关系之一在 Windows 8.1 上不起作用。例如Socket.io 在 Win 8 上存在一些问题。您的 Karma.conf 很好,但根据您的描述,您应该添加 singleRun: false。如果你对你正在做的任何事情持怀疑态度,只需在 win 8 以外的地方运行它来测试。

标签: angularjs karma-runner karma-jasmine


【解决方案1】:

Score2 是一个服务,所以它依赖于一个模块。由于以下原因,可以在测试期间更改模块:

  • 注入另一个同名模块
  • 声明另一个同名模块
  • 复制更新文件时出现转义问题
  • 重组beforeEach方法源顺序

清除afterEach 中的所有全局变量以防止这种情况发生。

参考文献

【讨论】:

    猜你喜欢
    • 2020-09-13
    • 2020-06-10
    • 1970-01-01
    • 2015-11-28
    • 1970-01-01
    • 2020-01-13
    • 2016-10-02
    • 2016-01-09
    • 1970-01-01
    相关资源
    最近更新 更多