Javascript 如何对同一URL使用不同的模块名称。所有模块将有不同的导出

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

我有一个用例,其中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

//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
})