如何为同一URL使用不同的模块名称。所有模块都会有不同的出口

时间:2014-08-13 09:00:15

标签: javascript unit-testing requirejs

我有一个用例,其中文件(例如 File.js )包含两个不同的构造函数,例如 A B 。 我想为这个文件中的构造函数编写单元测试。

但我不想对 File.js 本身进行任何更改。我的目标是将File.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 config中有以下内容

requirejs.config({
    paths: {
      'File-A': 'File',
      'File-B': 'File'
    },
    shim: {
      'File-A': {
         exports: 'A'
       },
      'File-B': {
         exports: 'B'
       }
    }
}

但是在对它进行r.js优化时会出现以下错误

  

以下模块共享相同的URL。这可能是一个   如果该URL只有一个匿名模块,则配置错误:

1 个答案:

答案 0 :(得分:0)

这是我能得到的最接近的 Can we export multiple non-AMD functions from a module in requirejs?

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