使用requirejs进行应用/单元测试时,我遇到了这种情况,使用此处提供的方法https://karma-runner.github.io/0.8/plus/RequireJS.html。
尝试使用Karma VS Test adpater(https://visualstudiogallery.msdn.microsoft.com/4cd59e4a-82e8-4b4e-8302-d102fc81b090)时,我在VS输出窗口中遇到以下错误
[Karma] [Discover] 1 tests discovered in 1 test containers
========== Discover test finished: 1 found (0:00:01.678) ==========
------ Run test started ------
An exception occurred while invoking executor 'executor://karmatestadapter/': One or more errors occurred.
Value cannot be null.
Parameter name: values
========== Run test finished: 0 run (0:00:00.083) ==========
并在浏览器中(如chrome)
require.js:165 Uncaught Error: Module name "../App/Password/password" has not been loaded yet for context: _. Use require([])(…)makeError @ require.js:165localRequire @ require.js:1429requirejs @ require.js:1791(anonymous function) @ TestUnitTests.js:3
main.test.js:35 load complete
我的main.test.js
var allTestFiles = [];
var TEST_REGEXP = /UnitTests\/.*.js$/;
var pathToModule = function (path) {
var returnValue = path.replace(/^\/base\//, '').replace(/.js$/, '');
return returnValue;
};
Object.keys(window.karma.files).forEach(function (file) {
if (TEST_REGEXP.test(file)) {
// Normalize paths to RequireJS module names.
allTestFiles.push(pathToModule(file));
}
});
requirejs.config({
// Karma serves files from '/base'
baseUrl: '/base',
deps: allTestFiles,
paths: {
'jquery.mockjax': 'Libraries/jquery.mockjax/jquery.mockjax'
},
shim: {
'jquery.mockjax': {
deps: ['jquery'],
init: function (m) { }
}
},
// start test run, once Require.js is done
callback: function () {
console.log('load complete');
window.__karma__.start();
}
});
我认为正在发生的事情是,当代码(main.test.js)期望在require回调中手动执行时,VS插件正在启动karma服务器。
我也在github项目上发布了https://github.com/MortenHoustonLudvigsen/KarmaTestAdapter/issues/60
如果其他人遇到过这个问题,或者能够让他的插件处于类似状态,我很感激。
答案 0 :(得分:0)
我遇到了一个类似的随机问题,其中所有测试都不会执行一次,但下一次他们会执行。所以我继续禁用了#3; Karma测试适配器" Visual Studio 2015 Extensions和Updates对话框中的扩展。这解决了我的问题。