我知道,TypeScript已经有一天了。但我很好奇是否在这里有一些单元测试框架或者如何编写和运行TypeScript的单元测试?
可以将TypeScript编译为JavaScript,我可以为该JavaScript编写测试,但这不是我想要的。
答案 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.');
}
});