unit-testing - 使用 Chutzpah 进行简单的 TypeScript 测试不起作用

标签 unit-testing jasmine chutzpah

我正在尝试使用 JasmineChutzpah 运行最基本的 TypeScript 测试,但我无法让它工作。这是源文件:

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.jsclassSimple.ts 旁边的完全相同的目录中。然而,当我使用 Chutzpah 运行规范时,我得到以下结果:

Message:Chutzpah run started in mode Execution with parallelism set to 4 Message:Building test context for C:\dev\TestProject\tests\jasmine\typescript\simpleSpec.ts Message:Building test context for 'C:\dev\TestProject\tests\jasmine\typescript\simpleSpec.ts' Message:Test file c:\dev\TestProject\tests\jasmine\typescript\simplespec.ts matched test file path from settings file Message:Investigating reference file path '../../../src/typescript/classSimple.ts' Message:Added file 'C:\dev\TestProject\src\typescript\classSimple.ts' to referenced files. Local: True, IncludeInTestHarness: True Message:Processing referenced file 'C:\dev\TestProject\src\typescript\classSimple.ts' for expanded references Message:Added framework dependency 'C:\Users\myself\AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\jasmine\v2\jasmine_favicon.png' to referenced files Message:Added framework dependency 'C:\Users\myself\AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\jasmine\v2\boot.js' to referenced files Message:Added framework dependency 'C:\Users\myself\AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\jasmine\v2\jasmine-html.js' to referenced files Message:Added framework dependency 'C:\Users\myself\AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\jasmine\v2\jasmine.js' to referenced files Message:Added framework dependency 'C:\Users\myself\AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\jasmine\v2\jasmine.css' to referenced files Message:Added framework dependency 'C:\Users\myself\AppData\Local\Microsoft\VisualStudio\14.0\Extensions\mfv4e3ra.luv\TestFiles\chutzpah_boot.js' to referenced files Message:Finished building test context for C:\dev\TestProject\tests\jasmine\typescript\simpleSpec.ts Error: 0 : Time:22:47:48.6888513; Thread:23; Message:Can't find location for generated path on C:\dev\TestProject\src\typescript\classSimple.ts Warning: 0 : Time:22:47:48.6978503; Thread:23; Message:Chutzpah determined generated .js files are missing but the compile mode is External so Chutzpah can't compile them. Test results may be wrong. Information: 0 : Time:22:47:48.7038522; Thread:23; Message:Found generated path for C:\dev\TestProject\tests\jasmine\typescript\simpleSpec.ts at c:\dev\TestProject\tests\jasmine\typescript\simpleSpec.js Error: 0 : Time:22:47:48.7088508; Thread:23; Message:Couldn't find generated path for C:\dev\TestProject\src\typescript\classSimple.ts at

就是这样 - 它只是在最后被切断,什么也没有发生。问题是,我在上面跟踪中指定的位置完全看到了 .js 文件,但 Chutzpah 声称​​无法找到 .. .

这与单元测试一样简单。我知道测试的工作独立于 .ts 文件,因为如果我只运行 .js 文件,测试就会通过。

我做错了什么?

最佳答案

感谢您发布非常详细的重现。您遇到了我已经见过几次的问题。由于 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 放在项目的根目录下。

我需要研究如何让Cuttzpah变得更好以避免这种情况。我想我会考虑在这种情况下让大胆假设文件位于同一位置以避免这种常见的陷阱。

关于unit-testing - 使用 Chutzpah 进行简单的 TypeScript 测试不起作用,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/37234090/

相关文章:

javascript - 在 init() 函数中调用 $timeout 时对 Controller 进行单元测试

javascript - beforeEach 每次测试都会被调用,而不是只调用一次

unit-testing - Clojure 测试覆盖率工具?

java - 将测试文件导入 JUnit 的简单方法

unit-testing - MSTest ClassInitialize 整个类(class)一次

javascript - Jasmine - 如何创建一个所有方法都已 stub 的纯 stub

javascript - karma Jasmine 单元测试出现未知提供者错误

javascript - 添加新参数后发生错误

tfs - Chutzpah 与 TFS 2012 的集成

unit-testing - Grails 单元测试 "CreateAlias"不起作用