用于Visual Studio的Karma测试适配器,使用requirejs无法正常工作

时间:2016-10-05 20:24:49

标签: unit-testing visual-studio-2015 requirejs karma-runner

使用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

如果其他人遇到过这个问题,或者能够让他的插件处于类似状态,我很感激。

1 个答案:

答案 0 :(得分:0)

我遇到了一个类似的随机问题,其中所有测试都不会执行一次,但下一次他们会执行。所以我继续禁用了#3; Karma测试适配器" Visual Studio 2015 Extensions和Updates对话框中的扩展。这解决了我的问题。