Javascript 如何对同一URL使用不同的模块名称。所有模块将有不同的导出
我有一个用例,其中filesay File.js包含两个不同的构造函数,比如a和B。 我想为这个文件中的两个构造函数编写单元测试 但我不想对File.js本身做任何更改。我的目标是将文件.js分为A.js和B.js,但只有在我有足够的测试用例用于A和B的情况下,这样做才是安全的 但同时我想编写测试,假设A和B已经是两个不同的模块。因此,我应该能够编写以下代码Javascript 如何对同一URL使用不同的模块名称。所有模块将有不同的导出,javascript,unit-testing,requirejs,Javascript,Unit Testing,Requirejs,我有一个用例,其中filesay File.js包含两个不同的构造函数,比如a和B。 我想为这个文件中的两个构造函数编写单元测试 但我不想对File.js本身做任何更改。我的目标是将文件.js分为A.js和B.js,但只有在我有足够的测试用例用于A和B的情况下,这样做才是安全的 但同时我想编写测试,假设A和B已经是两个不同的模块。因此,我应该能够编写以下代码 define(['File-A', 'File-B'], function (A, B) { //Write tests for A
define(['File-A', 'File-B'], function (A, B) {
//Write tests for A
//Write tests for B
})
为了实现这一点,我在我的requirejs配置中有以下内容
requirejs.config({
paths: {
'File-A': 'File',
'File-B': 'File'
},
shim: {
'File-A': {
exports: 'A'
},
'File-B': {
exports: 'B'
}
}
}
但在对其进行r.js优化时,我遇到了以下错误
以下模块共享相同的URL。这可能是一场灾难
如果该URL中只有一个匿名模块,则配置错误:
这是我能得到的最接近的
requirejs.config({
shim: {
File: {
exports: 'A',
init: function () {
return {
A: A,
B: B
};
}
}
}
}
define(['File'], function (AandB) {
var A = AandB.A,
B = AandB.B;
//Write tests for A
//Write tests for B
})