Karma runner不会运行所有文件

时间:2016-06-03 10:01:07

标签: javascript angularjs jasmine karma-runner karma-jasmine

由于我无法理解的一些奇怪的原因,我的业力运动员有时不会运行所有测试文件。

karma.conf.js:

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

    basePath: '',
    frameworks: ['jasmine'],

    files: [
        '../lib/angular/angular.min.js',
        '../lib/angular-mocks/angular-mocks.js',
        '../lib/angular-notify/dist/angular-notify.min.js',
        '../lib/JsCollection/dist/jscollection-0.1.5.min.js',
        '../lib/lodash/dist/lodash.min.js',
        'node_modules/jasmine-ajax/lib/mock-ajax.js',
        'app/**/*.js',
        'tests/**/*.js'
    ],

    plugins: [ 'karma-jasmine', 'karma-phantomjs-launcher'],
    reporters: ['progress'],
    port: 9876,
    colors: true,
    logLevel: config.LOG_INFO,
    autoWatch: true,
    browsers: ['PhantomJS'],
    singleRun: false
});
};

所以这就是发生的事情,我运行我的测试,一切都很好:

oli@devone:~/projects/2bi/public/src$ karma start
03 06 2016 11:40:44.861:WARN [karma]: No captured browser, open http://localhost:9876/
03 06 2016 11:40:44.921:INFO [karma]: Karma v0.13.22 server started at http://localhost:9876/
03 06 2016 11:40:44.967:INFO [launcher]: Starting browser PhantomJS
03 06 2016 11:40:46.764:INFO [PhantomJS 2.1.1 (Linux 0.0.0)]: Connected on socket /#qmOPHCmxWaFWMmvrAAAA with id 14003688
PhantomJS 2.1.1 (Linux 0.0.0): Executed 46 of 46 SUCCESS (0.708 secs / 0.888 secs)

所以我的46个测试正常执行,一切都很好,花花公子。然后我开始编码并且业力开始表现得奇怪,它有时并不会运行所有测试,但有时它会这样做。通常它只会运行16个测试,所以我必须重新启动才能再次运行所有测试。

这里我改变了公式测试几次:

03 06 2016 11:42:25.059:INFO [watcher]: Removed file "/home/oli/projects/2bi/public/src/tests/common/services/Formula.test.js".
PhantomJS 2.1.1 (Linux 0.0.0): Executed 16 of 16 SUCCESS (0.18 secs / 0.255 secs)
03 06 2016 11:42:32.882:INFO [watcher]: Added file "/home/oli/projects/2bi/public/src/tests/common/services/Formula.test.js".
03 06 2016 11:42:32.967:INFO [watcher]: Changed file "/home/oli/projects/2bi/public/src/tests/common/services/Formula.test.js".
PhantomJS 2.1.1 (Linux 0.0.0): Executed 46 of 46 SUCCESS (0.465 secs / 0.598 secs)
03 06 2016 11:43:12.529:INFO [watcher]: Removed file "/home/oli/projects/2bi/public/src/tests/common/services/Formula.test.js".
PhantomJS 2.1.1 (Linux 0.0.0): Executed 16 of 16 SUCCESS (0.136 secs / 0.246 secs)
03 06 2016 11:43:20.094:INFO [watcher]: Added file "/home/oli/projects/2bi/public/src/tests/common/services/Formula.test.js".
03 06 2016 11:43:20.183:INFO [watcher]: Changed file "/home/oli/projects/2bi/public/src/tests/common/services/Formula.test.js".
PhantomJS 2.1.1 (Linux 0.0.0): Executed 46 of 46 SUCCESS (0.506 secs / 0.626 secs)

所有内容都在虚拟机上运行,​​但文件系统是本地的。

任何人都知道发生了什么事?

3 个答案:

答案 0 :(得分:1)

存储到临时文件并替换原始文件的编辑器似乎是个问题。

我正在使用JetBrains RubyMine。取消选中使用“安全写入”(首先保存对临时文件的更改)修复此问题。

答案 1 :(得分:1)

我有类似的情况,问题是在单元测试中使用的system("sqlite3 file.sql")。以下是导致Karma在运行所有测试时随机失败的测试的代码示例:

setTimeout

因为it('should test something', () => { ... setTimeout(() => { expect(...) }, 0) }) Karma不知道测试是否完成,所以解决方案是在测试完成时告诉Karma。这是修复:

setTimeout

这解决了我们的问题,现在所有测试都正常运行。

答案 2 :(得分:0)

经过一番研究后发现,业力观察者可能会遇到一些问题。

在这个特定情况下帮助我的是在usePolling: false中添加karma.conf.js

如果有人遇到这个问题我会离开这里。