我很难在Typescript中为我的宠物项目设置单元测试。
考虑以下目录结构
/src
/test
unittest.ts
unittest.html
main.ts
main.ts
:
class Point {
constructor(public x: number, public y: number) {
}
}
export { Point };
unittest.ts
import Point from "../main";
function basicTest() {
let Point = new Point(10, 15);
// ...
}
basicTest();
unittest.html
<html>
<meta charset="UTF-8">
<head></head>
<body>
<script src="unittest.js" charset="utf-8"></script>
</body>
</html>
编译此代码后tsc src/test/unittest.ts && open src/test/unittests.html
我看到以下错误
ReferenceError: require is not defined
。
我曾尝试将requirejs添加到unittest.html,但这会导致一些模糊的错误。我还尝试在编译期间使用--module system
和--module amd
,但没有成功。)
我是否错过了一些依赖?
谢谢!
答案 0 :(得分:2)
您的测试中的导入行将编译为类似......
var foo_1 = require("./foo");
需要配置require语句。 Javascript没有提供开箱即用的模块加载支持。有几种不同的方法可以做。它们都是不同的方法&#34;我如何找到要求的模块并加载它。&#34;我将让您对Javascript中的各种模块解析机制进行一些研究,但有四种主要方法:
require
,您只需使用<script>
标记引用HTML中的相关库)如果这是一个较新的项目,您可能需要一个支持ES2015风格的工具。 RequireJS是一个支持AMD模块加载的工具。您可能希望查看Webpack或SystemJS,它们是流行的方法。我主要使用SystemJS。您通常不想手动配置SystemJS,我建议使用jspm
这样做。您可以找到入门指南here。
如果您希望查看Webpack,可以开始使用here。
答案 1 :(得分:0)
在这种情况下,解决依赖关系的最简单方法似乎是使用
browserify
及其插件tsify
:
browserify src/test/unittest.ts -p [ tsify --debug ] > src/test/unittest.js