使用Karma和Jasmine从JS测试文件测试编译的TypeScript
Testing compiled TypeScript with Karma and Jasmine from a JS test file
我有一个具有以下结构的项目:
build
- out.js
spec
- foo.spec.js
- bar.spec.js
src
- foo.ts
- bar.ts
这两个.ts文件被构建到out.js
中。在我的.spec.js
文件中,我希望能够轻松地引用out.js
。
当在纯JS项目中使用Karma/Jastine时,我只需使用RequireJS,并将我的测试文件封装在define(['a'], function(a) { ... });
文件中。然后,在a.js
中,内容将被这样包装:
define([], function() {
Foo.prototype. .......
Foo.prototype. .......
return Foo;
});
然而,由于out.js将由TypeScript编译器构建,因此无法封装在define(...)
块中,因此我无法使用RequireJS正确导入它。
澄清:
有了手写的JS,比如下面,我可以把它导入我的测试文件fine:
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()
包装中?
您应该使用"--module amd"参数
在visual studio 2015:项目/"你的项目"属性/Typescript建筑/模块系统/amd
下一篇:
bla.ts:
function Bla() {
}
Bla.prototype.hi = function () {
return "hey";
};
export = Bla;
bla.js:
define(["require", "exports"], function (require, exports) {
function Bla() {
}
Bla.prototype.hi = function () {
return "hey";
};
return Bla;
});
相关文章:
- 如何使用gulp-test和karma在浏览器中调试Javascript测试文件
- 使用仪器从iOS自动化测试文件进行异步调用
- 在浏览器中测试 JavaScript 脚本,而无需创建 html/javascript 测试文件
- 配置 karma 以最后加载测试文件
- 如何在卡斯珀测试文件中包含文件内容
- 如何使用 Jasmine BDD 测试文件上传
- 摩卡只运行一个测试文件
- 如何在量角器中运行相同的测试文件两次
- 单元测试 - 测试文件计数和文件夹大小
- 从gulp打字稿js流中拆分src和测试文件
- 使用Karma和Jasmine从JS测试文件测试编译的TypeScript
- 不显示'测试文件:XXX.js'在测试casperjs文件时
- 在CasperJS中拆分测试文件——与它的逻辑斗争
- 如何在每个karma/jasmine测试文件的开头引导angular
- 避免firefox protractor中多个测试文件中的一个测试
- 运行嵌入了一个小测试文件
- 特定测试文件的Node.js代码覆盖率
- 在浏览器和Node.JS中导入用Mocha/Chai/TypeScript编写的测试文件
- 评估助手与被测试文件的上下文相同
- 如何使用单个命令运行多个QUnit(node.js)测试文件