我正在尝试使用Typescript源文件的单元测试创建一个Typescript文件。我的项目结构:
/js/my-unit.ts
/js-tests/my-unit.tests.ts
/Scripts/typings/qunit/qunit.d.ts
/chutzpah.json
这是my-unit.ts
内容:
function globalFunc() { return { dummy: "object" }; }
这是my-unit.tests.ts
内容:
/// <reference path="../scripts/typings/qunit/qunit.d.ts" />
/// <reference path="../js/my-unit.ts" />
QUnit.test("Test 1", assert => assert.ok(!!globalFunc()));
这是chutzpah.json
文件:
{
"Compile": {
"Mode": "External",
"Extensions": [ ".ts" ],
"ExtensionsWithNoOutput": [ ".d.ts" ]
},
"Tests": [
{ "Includes": [ "**/*-tests/**.ts" ] }
]
}
测试是红色的,因为:
无法找到变量:globalFunc
为什么!? 我该如何解决?
我尝试了什么:
.js
文件,但不允许这样做reference
更改为源到路径(使用和不使用斜杠结尾),但这会在Visual Studio中出现错误class Foo {}
测试中添加assert.ok(!!new Foo())
,但这也失败了module My { export class Foo { } }
测试中添加assert.ok(!!new My.Foo())
,但这也失败了使用其他Chutzpah扩展程序中的“在浏览器中打开”功能,并检查测试文件的源代码(可能也是从测试资源管理器运行时为测试生成的),在那里我看到的确是我的源文件(my-unit.ts
或my-unit.js
)未引用:
<!DOCTYPE html>
<html>
<head>
<meta charset="utf-8" />
<title>QUnit Tests</title>
<link rel="stylesheet" type="text/css" href="file:///E:/path/to/TestFiles/QUnit/qunit.css"/>
<script type="text/javascript" src="file:///E:/path/to/TestFiles/QUnit/qunit.js"></script>
<script type="text/javascript" src="file:///E:/path/to/project/js-tests/my-unit.tests.js"></script>
<script>
var amdTestPaths = [];
// code ommitted for brevity...
</script>
</head>
<body>
<div id="qunit"></div>
<div id="qunit-fixture"></div>
</body>
</html>
添加
"References": [{ "Path": "js", "Includes": [ "**.ts" ], "Excludes": [ "**.d.ts" ] }
到我的chutzpah.json
文件。这样的工作,但是是一个相当暴力的黑客,因为现在所有我的源文件将包含在每个测试夹具...
以上是(实际上)我的实际场景的最小重复。我怎样才能让它发挥作用?