我尝试使用TypeScript
和Jasmine
运行最基本的Chutzpah
测试,但我无法让它发挥作用。这是源文件:
class Simple {
public easyTest() {
return 5;
}
}
以下是规范:
/// <reference path="../../../scripts/typings/jasmine/jasmine.d.ts" />
/// <reference path="../../../src/typescript/classSimple.ts" />
describe("Simple Calculations", () => {
it("should return true", () => {
var simpl = new Simple();
expect(simpl.easyTest()).toBe(5);
});
});
这是我的chutzpah.json
文件:
{
"RootReferencePathMode": "SettingsFileDirectory",
"Framework": "jasmine",
"Compile": {
"Mode": "External",
"Extensions": [ ".ts" ],
"ExtensionsWithNoOutput": [ ".d.ts" ]
},
"References": [
{ "Path": "../../../src/typescript/classSimple.ts" }
],
"Tests": [
{ "Path": "simpleSpec.ts" }
],
"EnableTracing": true
}
这是文件夹结构
TestProject.sln
-src
--typescript
---classSimple.ts
-tests
--jasmine
---typescript
----chutzpah.json
----simpleSpec.ts
此VS.NET项目设置为在保存时编译TypeScript
,我实际查看JavaScript
输出的classSimple.js
输出:classSimple.ts
在{旁边的完全相同的目录中{1}}。然而,当我使用Chutzpah
运行规范时,我得到以下内容:
消息:Chutzpah运行以并行设置为的执行模式启动 4消息:构建测试上下文 C:\ dev的\ TestProject \测试\茉莉花\打字稿\ simpleSpec.ts 消息:构建测试上下文 &#39; C:\ dev的\ TestProject \测试\茉莉\打字稿\ simpleSpec.ts&#39; 消息:测试文件 c:\ dev \ TestProject \ tests \ jasmine \ typescript \ simplespec.ts匹配测试 来自设置文件的文件路径消息:调查参考文件路径 &#39; ../../../ SRC /打字稿/ classSimple.ts&#39;消息:添加文件 &#39; C:\ dev的\ TestProject \ SRC \打字稿\ classSimple.ts&#39;引用 文件。 Local:True,IncludeInTestHarness:True Message:Processing 引用文件&#39; C:\ dev \ TestProject \ src \ typescript \ classSimple.ts&#39;对于 扩展引用消息:添加了框架依赖性 &#39; C:\用户\我\应用程序数据\本地\微软\ VisualStudio的\ 14.0 \扩展\ mfv4e3ra.luv \ TestFiles \茉莉花\ V2 \ jasmine_favicon.png&#39;引用文件消息:添加了框架依赖项 &#39; C:\用户\我\应用程序数据\本地\微软\ VisualStudio的\ 14.0 \扩展\ mfv4e3ra.luv \ TestFiles \茉莉花\ V2 \ boot.js&#39; 引用文件消息:添加了框架依赖项 &#39; C:\用户\我\应用程序数据\本地\微软\ VisualStudio的\ 14.0 \扩展\ mfv4e3ra.luv \ TestFiles \茉莉花\ V2 \茉莉花html.js&#39; 引用文件消息:添加了框架依赖项 &#39; C:\用户\我\应用程序数据\本地\微软\ VisualStudio的\ 14.0 \扩展\ mfv4e3ra.luv \ TestFiles \茉莉花\ V2 \ jasmine.js&#39; 引用文件消息:添加了框架依赖项 &#39; C:\用户\我\应用程序数据\本地\微软\ VisualStudio的\ 14.0 \扩展\ mfv4e3ra.luv \ TestFiles \茉莉花\ V2 \ jasmine.css&#39; 引用文件消息:添加了框架依赖项 &#39; C:\用户\我\应用程序数据\本地\微软\ VisualStudio的\ 14.0 \扩展\ mfv4e3ra.luv \ TestFiles \ chutzpah_boot.js&#39; 引用文件消息:完成构建测试上下文 C:\ dev \ TestProject \ tests \ jasmine \ typescript \ simpleSpec.ts错误:0: 时间:22:47:48.6888513;主题:23;消息:无法找到位置 在C:\ dev \ TestProject \ src \ typescript \ classSimple.ts上生成路径 警告:0:时间:22:47:48.6978503;主题:23;消息:放肆 确定生成的.js文件丢失但编译模式为 外部因此Chutzpah无法编译它们。测试结果可能有误。 信息:0:时间:22:47:48.7038522;主题:23;消息:实测值 生成的路径 C:\ dev \ TestProject \ tests \ jasmine \ typescript \ simpleSpec.ts at c:\ dev \ TestProject \ tests \ jasmine \ typescript \ simpleSpec.js错误:0: 时间:22:47:48.7088508;主题:23;消息:无法找到生成的路径 对于C:\ dev \ TestProject \ src \ typescript \ classSimple.ts
就是这样 - 它只是在最后切断而没有任何反应。问题是,我在上面的跟踪中所述的位置看到。js
文件完全,但Chutzpah声称无法找到生成的路径...
这与单元测试一样简单。我知道测试的工作独立于.ts
文件,因为如果我只运行测试通过的.js
文件。
我做错了什么?
答案 0 :(得分:3)
感谢发布非常详细的复制品。你遇到了一个我见过几次的问题。由于你的chutzpah.json嵌套在你的测试文件夹中,你需要指定chutzpah应该用来确定如何从源文件映射到输出文件夹的文件夹路径映射。要做到这一点,只需将chutzpah.json更改为:
{
"RootReferencePathMode": "SettingsFileDirectory",
"Framework": "jasmine",
"Compile": {
"Mode": "External",
"Extensions": [ ".ts" ],
"ExtensionsWithNoOutput": [ ".d.ts" ],
"Paths": [
{ "SourcePath": "../../../", "OutputPath": "../../../"}
]
},
"References": [
{ "Path": "../../../src/typescript/classSimple.ts" }
],
"Tests": [
{ "Path": "simpleSpec.ts" }
],
"EnableTracing": true,
"TraceFilePath": "trace.txt"
}
另一种解决方法是将chutzpah.json放在项目的根目录下。
我需要考虑让Chutzpah更好地避免这种情况。我想我会考虑让chutzpah在这种情况下假设文件位于同一位置以避免这种常见的陷阱。
答案 1 :(得分:0)
我的Chutzpah项目中的一些新测试是用TypeScript编写的,并编译成一个outfile
:
<强> tsconfig.json 强>
"compilerOptions": {
"noImplicitAny": true,
"target": "es5",
"module": "none",
"outFile": "./Tests/mytests-ts.js",
"sourceMap": true
}
Chutzpah无法找到*.ts
个文件
Chutzpah Error: System.IO.FileNotFoundException: Couldn't find generated path for D:\Code\ChutzpahProject\Scripts\DateServiceMock.ts
直到我使用Paths
选项:
<强> chutzpah.json 强>
"Compile": {
"Extensions": [ ".ts" ],
"ExtensionsWithNoOutput": [ ".d.ts" ],
"Executable": "build-ts.cmd",
"Paths": [
{ "OutputPath": "Tests/mytests-tests-ts.js" }
]
},
这感觉好像是对@matthew-manela的回答的评论......我想。