使用Chutzpah进行简单的TypeScript测试

时间:2016-05-15 02:54:39

标签: unit-testing jasmine chutzpah

我尝试使用TypeScriptJasmine运行最基本的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文件。

我做错了什么?

2 个答案:

答案 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的回答的评论......我想。