【问题标题】:How do I write TypeScript tests that don't include the classes under test in the transpiled test code?如何编写在转译的测试代码中不包含被测类的 TypeScript 测试?
【发布时间】:2016-04-11 22:56:50
【问题描述】:

我有一个 TypeScript 项目,可以编译成 /dist 中的单个 JS 文件。

我有 Jasmine 测试,也是用 TypeScript 编写的,它们引用了他们测试的各种类,例如:

/// <reference path="../../../src/script/classUnderTest.ts" />

当我编译测试时,TypeScript 编译器会引入所有引用的类,我会得到一个包含测试代码和被测代码的 JS 文件。

这实际上只适用于运行测试,但现在我也想要代码覆盖率。据我所知,要让伊斯坦布尔工作,我需要将被测代码与测试代码分开。此外,如果能准确地测试将要上线的 JS 文件,那就太好了。

那么,当测试实际运行时,如何在使用我编译的 JS 文件时获得“/// 引用”的类型安全和自动完成优势?

(或者我是完全找错树了吗?)

注意,我是在 Mac 上构建的,所以从我读过的内容来看,Chutzpah 目前不是一个选项。我目前也只使用 npm 脚本进行构建。除非绝对必要,否则我宁愿不要引入 grunt 或 gulp。

【问题讨论】:

    标签: node.js unit-testing typescript


    【解决方案1】:

    那么,当测试实际运行时,如何在使用我编译的 JS 文件时获得“/// 引用”的类型安全和自动完成优势?

    不要使用 TypeScript 的 --outFile 选项 (few other reasons)。而是使用模块,例如--module commonsjs 和一个模块加载器,例如webpack

    更多

    浏览器快速入门:https://basarat.gitbooks.io/typescript/content/docs/quick/browser.html

    模块: https://basarat.gitbooks.io/typescript/content/docs/project/modules.html

    【讨论】:

    • 谢谢,你能说得具体一点吗?如果我在我的测试文件中使用 TypeScript 导入,那么构建测试会重建主代码(尽管如此覆盖确实有效)。如果我要使用 RequireJS 之类的东西,那么我想我不会获得类型安全,除非我还为我的编译模块创建了一个 .d.ts 文件?
    猜你喜欢
    • 2013-02-24
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2018-10-16
    • 1970-01-01
    相关资源
    最近更新 更多