我正尝试使用单元测试为Typescript源文件创作一个Typescript文件。我的项目结构:使用Chutzpah对Typescript源文件运行Typescript QUnit测试
/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
文件在我的测试文件,但不允许 - 寻找受骗者,发现主要this question,但一个答案没” (由Chutzpah的作者不少)似乎与我自己的设置相似
- 重读the "Running Unit Tests with Typescript" documenation
- 改变
reference
到源路径(有和没有结束斜线),但给我的错误在Visual Studio - 在单位文件和
assert.ok(!!new Foo())
测试加入class 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
文件。这种-的作品,但它是一个相当暴力破解,因为现在所有我的源文件都应该包含每个测试夹具...
上面是(希望)我的实际场景的最小再现。我怎样才能使它工作?
'ExpandReferenceComments'默认为false,因为建议您在chutzpah.json的'References'部分显式设置所有引用。这是更高效和更清晰。但是,如果您希望展开行为与您的设置一样。 –
@MthethewManela感谢您的授权评论:)。我一直认为'References'部分是“所有灯具都需要这个”的东西,例如我用它来包含jQuery和Angular。 (担心如果我将路径放到我的应用程序文件中,那么每个夹具都会包含所有应用程序文件。)无论如何,明天我会尝试将您的评论对首选方法的建议转化为我的答案供其他人使用。 – Jeroen
引用中的所有内容都将添加到您的测试工具中。通常这对很多人来说都可以。但是,如果您需要不同测试的不同组参考,那么您实际上可以创建可以相互继承的chutzpah.json文件的层次结构。这是**高级**,但效果很好。 –