TypeScript 中的单元测试 [关闭]

Posted

技术标签:

【中文标题】TypeScript 中的单元测试 [关闭]【英文标题】:Unittesting in TypeScript [closed] 【发布时间】:2012-09-23 15:21:11 【问题描述】:

我知道,TypeScript 已经诞生了一天。但我很好奇这里是否有某种单元测试框架或如何为 TypeScript 编写和运行单元测试?

TypeScript 可以编译为 javascript,我可以为该 JavaScript 编写测试,但这不是我想要的。

【问题讨论】:

那你想要什么?单元测试测试代码的运行时行为,这在 Javascript 中是完全可见的。 也许他想要一个用于编写单元测试的 TypeScript 框架。 Typescript 只是 javascript -- 这就是重点。为现有的测试框架添加打字稿定义文件将是我们想要的。正如 Sohnee 回答的那样。 现在有一个用 TypeScript 编写的用于单元测试的开源项目,它在与 TypeScript 相同的许可下发布。 Codeplex 上的 tsUnit。 tsunit.codeplex.com @Sohnee 请将此添加为答案,谢谢。 【参考方案1】:

似乎还有另一个名为 Intern 的测试运行程序/框架。 https://theintern.github.io/

这里有一篇文章解释了如何结合 TypeScript 使用它:https://www.sitepen.com/blog/2015/03/24/testing-typescript-with-intern/

当您使用 TypeScript 并且正在寻找支持源映射的单元测试设置时,看起来很有希望。

示例测试:

import registerSuite = require('intern!object');
import assert = require('intern/chai!assert');
// Assume that we now have a version of our model in TypeScript:
import SimpleTodoModel = require('todo/model/SimpleTodoModel');

registerSuite(
    name: 'SimpleTodoModel',
    // Assume we have a promises interface defined
    'default data'() 
        var emptyModel = new SimpleTodoModel(),
            id:string = emptyModel.get('id'),
            length:number = emptyModel.get('todos').length,
            incomplete:number = emptyModel.get('incomplete'),
            complete:number = emptyModel.get('complete');
        assert.strictEqual(id, 'todos-dojo',
                    'Id should default to "todos-dojo"');
        assert.strictEqual(length, 0,
                    'Todos array should default to an empty array.');
        assert.strictEqual(incomplete, 0,
                    'Incomplete count should default to 0.');
        assert.strictEqual(complete, 0,
                    'Incomplete count should default to 0.');
    
);

【讨论】:

【参考方案2】:

您可以使用任何现有的 JavaScript 单元测试框架,在 TypeScript 或 JavaScript 中编写单元测试。

很快,我想现有的框架将获得 TypeScript 环境定义文件(更新 - 他们有:http://definitelytyped.org/),这将使它们就 TypeScript 而言是静态类型的。与此同时,您可能需要阅读环境声明,并在测试开始时添加一些您自己的声明。

或者,您可以使用tsUnit TypeScript Unit Testing Framework,这是一个用 TypeScript 编写的单元测试框架 - 所以它与 TypeScript 配合得很好(也可以在 JavaScript 中使用)。

【讨论】:

【参考方案3】:

TypeScript 不是运行时语言。要执行您的 TypeScript 代码,您首先需要将其编译为 JavaScript;同样适用于测试它。 你的测试也可以在 TypeScript 中,编译成 JavaScript 并使用你最喜欢的测试框架来执行测试。

【讨论】:

今天不一定是这样。像 ts-mochats-node 这样的包允许在不在磁盘上生成 js 文件的情况下执行 typescript。这通常是可取的,因为它会为您处理源映射,并且不会用已编译的 js 弄乱您的工作区。诚然,我确信 js 仍在内存中生成,但我不确定在运行测试之前进行转译是当今最简单或最有效的工作流程。

以上是关于TypeScript 中的单元测试 [关闭]的主要内容,如果未能解决你的问题,请参考以下文章

C中单元测试的自动生成器[关闭]

Angular2(TypeScript)中的单元测试/模拟窗口属性

如何使用 Visual Studio Code 中的 Mocha 调试 Typescript 编写的单元测试

Jasmine 使用 Angular 中的 TypeScript 对文件大小进行单元测试

在 Typescript 单元测试中模拟

如何在 Typescript 中对私有方法进行单元测试