【发布时间】:2016-03-15 11:52:21
【问题描述】:
我有一个具有以下结构的项目:
build
- out.js
spec
- foo.spec.js
- bar.spec.js
src
- foo.ts
- bar.ts
这两个 .ts 文件被构建到 out.js 中。在我的.spec.js 文件中,我希望能够轻松引用out.js。
在纯 JS 项目中使用 Karma/Jasmine 时,我只是使用 RequireJS,并将我的测试文件包装在一个 define(['a'], function(a) { ... }); 文件中。然后,在a.js 中,内容会被这样包装:
define([], function() {
Foo.prototype. .......
Foo.prototype. .......
return Foo;
});
但是,由于 out.js 将由 TypeScript 编译器构建,因此无法包装在 define(...) 块中,我无法使用 RequireJS 正确导入它。
澄清一下:
使用手写 JS,如下所示,我可以很好地将其导入到我的测试文件中:
define([], function() {
function Bla() { }
Bla.prototype.hi = function () {
return "hey";
};
return Bla;
});
使用类似的 JS,但使用 TypeScript 编译器构建,因此缺少 define([]) 包装器,当我将 undefined 导入到我的测试时,我只是得到它。
var Bla = (function () {
function Bla() { }
Bla.prototype.hi = function () {
return "hey";
};
return Bla;
})();
如何配置 TypeScript 编译器以将已编译的类包装在 define() 包装器中,或者如何配置我的测试以导入该类而不将其包装在 define() 包装器中?
【问题讨论】:
标签: javascript node.js typescript requirejs karma-jasmine