TypeScript中的单元测试

时间:2012-10-02 18:18:03

标签: unit-testing typescript

我知道,TypeScript已经有一天了。但我很好奇是否在这里有一些单元测试框架或者如何编写和运行TypeScript的单元测试?

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

3 个答案:

答案 0 :(得分:20)

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

答案 1 :(得分:16)

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

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

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

答案 2 :(得分:0)

似乎还有另一个名为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.');
    }
});