由于我无法理解的一些奇怪的原因,我的业力运动员有时不会运行所有测试文件。
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)
所有内容都在虚拟机上运行,但文件系统是本地的。
任何人都知道发生了什么事?
答案 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
。
如果有人遇到这个问题我会离开这里。