如何在业力unit testing中加载版本化资源

请在下面find我的karma.conf.js:

module.exports = function (config) { var path = require("path"), basePath = "../../../../../..", version = require(path.join(__dirname, basePath, "ThirdPartyJsLibRootMap.json")); config.set({ basePath: basePath, frameworks: ['intern'], files: [ 'Tools/Karma/dojo-config.js', 'http://devstatic/libraries/dojo-debug/' + version['dojo-debug'] + '/dojo/dojo.js', ... ], reporters: ['progress', 'html'], htmlReporter: { outputFile: 'Tools/Karma/HRunitTestReport.html' }, port: 9876, colors: false, logLevel: config.LOG_INFO, autoWatch: false, browsers: ['Chrome'], captureTimeout: 60000, browserNoActivityTimeout: 60000, singleRun: true }); }; 

files部分指定了几个文件,但最重要的是:

  • Tools/Karma/dojo-config.js
  • http://devstatic/libraries/dojo-debug/' + version['dojo-debug'] + '/dojo/dojo.js

请注意,所有第三方依赖关系都是从专用服务器提供的 – devstatic 。 这是一个内部的CDN。 第三方内容也是版本化的,我们应用程序当前版本使用的版本存储在专用的json文件 – ThirdPartyJsLibRootMap.json中 ,该文件是应用程序的一部分。

上述karma.conf.js的作品,但我不知道如果我正确地做。 我有一个感觉,该文件部分不打算持有HTTPurl。 而且我非常肯定它不会像**这样的expression式。

但还有更多。 Tools/Karma/dojo-config.js负责常见的configuration,如下所示:

 window.__karma__.loaded = function () { }; setImmediate = function (fn) { fn(); }; dojoConfig = { baseUrl: "http://devstatic/libraries/dojo-debug/1.10.4", async: true, useDeferredInstrumentation: true, has: { 'host-karma': true }, paths: { 'Globalization': 'http://devstatic/libraries/globalization-debug/0.1.1', 'put-selector': 'http://devstatic/libraries/put-selector/0.3.5', 'dgrid': 'http://devstatic/libraries/dgrid/0.3.16', 'xstyle': 'http://devstatic/libraries/xstyle/0.1.3', 'toastr': 'http://devstatic/libraries/toastr/1.2.2-514cc12', ... }, packages: [ { name: "jquery", location: "http://devstatic/libraries/jquery/1.8.3", main: "jquery" }, { name: "jquerybase64", location: "http://devstatic/libraries/jquery/1.8.3", main: "jquery.base64" }, { name: "dojo", location: "http://devstatic/libraries/dojo-debug/1.10.4/dojo" }, { name: "dijit", location: "http://devstatic/libraries/dojo-debug/1.10.4/dijit" }, { name: "dojox", location: "http://devstatic/libraries/dojo-debug/1.10.4/dojox" }, { name: "intern", location: "/base/Tools/Intern/node_modules/intern" }, { name: "karma", location: "/base/Tools/Karma" } ], deps: null, callback: null }; 

在这里,我遇到了一个重大问题。 如何将从ThirdPartyJsLibRootMap.json加载的第三方版本传递给Tools/Karma/dojo-config.js

我的意思是,那些版本在karma.conf.js被处理的时候是已知的,如果我可以将它们注入由业力生成的html页面,那么我可以从Tools/Karma/dojo-config.js引用它们,并组成正确的第三第三方url。 唉,迄今为止没有办法做到这一点。

所以,基本上我有以下问题:

  1. 在karma.conf.js中引用http URL的正确方法是什么? 答案可能是 – 不,但是我怎样才能让它由生成的html页面加载?
  2. 如果加载http URL的方式,我在karma.conf.js是没有问题,那么如何指定expression式如**
  3. 如何使在karma.conf.js中计算的信息可用于在浏览器中加载的JavaScript? 这个信息在“节点时间”(运行karma.conf.js的时候)是已知的,但是我很困惑如何在“浏览器时间”使它可用。