Karma 运行ner 不 运行 所有文件
Karma runner does not run all files
由于一些我无法理解的奇怪原因,我的业力 运行ner 有时不会 运行 所有测试文件。
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 个测试都正常执行,一切都很好。然后我开始编写代码,karma 开始表现得很奇怪,它有时不会 运行 所有测试,但有时会。通常它只卡在 运行 宁说 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)
一切都是 运行 在 virtualbox 机器上,但文件系统是本地的。
有人知道发生了什么事吗?
经过一些研究发现业力观察者可能有一些问题。
在这个特殊情况下对我有帮助的是在 karma.conf.js
中添加 usePolling: false
。
如果有人有这个问题,我会把它留在这里。
编辑器存储到临时文件并替换原始文件似乎是问题所在。
我正在使用 JetBrains RubyMine。取消选中 使用 "safe write"(首先将更改保存到临时文件) 解决了这个问题。
我遇到过类似的情况,问题是在单元测试中使用了 setTimeout
。这是导致 Karma 在 运行 所有测试中随机失败的测试代码示例:
it('should test something', () => {
...
setTimeout(() => {
expect(...)
}, 0)
})
因为 setTimeout
Karma 不知道测试是否完成,所以解决方案是在测试完成时告诉 Karma。这是修复:
it('should test something', (done) => {
...
setTimeout(() => {
expect(...)
done()
}, 0)
})
这解决了我们的问题,现在所有测试都 运行 正确。
由于一些我无法理解的奇怪原因,我的业力 运行ner 有时不会 运行 所有测试文件。
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 个测试都正常执行,一切都很好。然后我开始编写代码,karma 开始表现得很奇怪,它有时不会 运行 所有测试,但有时会。通常它只卡在 运行 宁说 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)
一切都是 运行 在 virtualbox 机器上,但文件系统是本地的。
有人知道发生了什么事吗?
经过一些研究发现业力观察者可能有一些问题。
在这个特殊情况下对我有帮助的是在 karma.conf.js
中添加 usePolling: false
。
如果有人有这个问题,我会把它留在这里。
编辑器存储到临时文件并替换原始文件似乎是问题所在。
我正在使用 JetBrains RubyMine。取消选中 使用 "safe write"(首先将更改保存到临时文件) 解决了这个问题。
我遇到过类似的情况,问题是在单元测试中使用了 setTimeout
。这是导致 Karma 在 运行 所有测试中随机失败的测试代码示例:
it('should test something', () => {
...
setTimeout(() => {
expect(...)
}, 0)
})
因为 setTimeout
Karma 不知道测试是否完成,所以解决方案是在测试完成时告诉 Karma。这是修复:
it('should test something', (done) => {
...
setTimeout(() => {
expect(...)
done()
}, 0)
})
这解决了我们的问题,现在所有测试都 运行 正确。