用JStesting文件testing用Karma和Jasmine编译的TypeScript

我有一个具有以下结构的项目:

build - out.js spec - foo.spec.js - bar.spec.js src - foo.ts - bar.ts 

这两个.ts文件被构build到out.js 。 在我的.spec.js文件中,我希望能够轻松地引用out.js

当在纯JS项目中使用Karma / Jasmine时,我只需要使用RequireJS,并将我的testing文件封装在define(['a'], function(a) { ... }); 文件。 然后,在a.js ,内容将如此包装:

 define([], function() { Foo.prototype. ....... Foo.prototype. ....... return Foo; }); 

但是,由于out.js将由TypeScript编译器构build,因此无法封装在define(...)块中,因此无法使用RequireJS正确导入它。


澄清:

用下面的手写JS,我可以把它导入到我的testing文件中:

 define([], function() { function Bla() { } Bla.prototype.hi = function () { return "hey"; }; return Bla; }); 

与类似的JS,但用TypeScript编译器构build,因此缺lessdefine([])包装,我简单地得到undefined时,我将其导入到我的testing。

 var Bla = (function () { function Bla() { } Bla.prototype.hi = function () { return "hey"; }; return Bla; })(); 

我怎样才能configurationTypeScript编译器来包装我的编译类在define()包装,或者我怎样才能configuration我的testing导入类没有被包装在一个define()包装?

你应该使用“–module amd”参数

在Visual Studio 2015中:Project /“您的项目”属性/ Typescript Building / module system / amd

和下一个:

bla.ts:

 function Bla() { } Bla.prototype.hi = function () { return "hey"; }; export = Bla;