我使用Karma和jasmine进行单元测试。我有一个main-test.js
文件来配置karma,一个main.js
来配置我的应用程序。
main-test.js
:
//
...
//
require.config({
baseUrl: '/base',
paths: {
jquery: 'components/jquery/dist/jquery', // this is copypaste
//another dependencies
},
//
...configuration
//
});
main.js
require.config({
paths: {
jquery: 'components/jquery/dist/jquery', // this is copypaste
//another dependencies
},
//
...configuration
//
});
在这两种配置之间共享路径的正确方法是什么?
答案 0 :(得分:2)
我们遇到了与我的团队相同的问题,最后要求将主配置改为 test-main.js :
// requiring global requireJS config
require(['/base/config/require.conf.js'], function() {
'use strict';
// first require.config overload: Karma specific
require.config({
baseUrl: '/base/src',
paths: {
'angularMocks': '../bower_components/angular-mocks/angular-mocks'
},
shim: {
'angularMocks': {
deps: ['angular']
}
}
});
require(['angularMocks'], function() {
var specFiles = [];
for (var file in window.__karma__.files) {
if (window.__karma__.files.hasOwnProperty(file)) {
if (/\/base\/src\/.*_test\.js$/.test(file)) {
specFiles.push(file);
}
}
}
// second overload to include specFiles and start Karma
require.config({
deps: specFiles,
callback: window.__karma__.start
});
});
});
我们的使用AngularJS + RequireJS的项目的入门应用程序结构可在此处获取:angular-requirejs-ready。
我不认为这是正确的方式,只是我们的方式;)