我知道,TypeScript 已经诞生了一天。但我很好奇这里是否有某种单元测试框架或如何为 TypeScript 编写和运行单元测试?
TypeScript 可以编译为 JavaScript,我可以为该 JavaScript 编写测试,但这不是我想要的。
我知道,TypeScript 已经诞生了一天。但我很好奇这里是否有某种单元测试框架或如何为 TypeScript 编写和运行单元测试?
TypeScript 可以编译为 JavaScript,我可以为该 JavaScript 编写测试,但这不是我想要的。
TypeScript 不是运行时语言。要执行您的 TypeScript 代码,您首先需要将其编译为 JavaScript;同样适用于测试它。你的测试也可以在 TypeScript 中,编译成 JavaScript 并使用你最喜欢的测试框架来执行测试。
您可以使用任何现有的 JavaScript 单元测试框架在 TypeScript 或 JavaScript 中编写单元测试。
很快,我想现有的框架将获得 TypeScript 环境定义文件(更新 - 它们有:http ://definitelytyped.org/ ),这将使它们就 TypeScript 而言是静态类型的。同时,您可能需要阅读环境声明并在测试开始时添加一些您自己的声明。
或者,您可以使用tsUnit TypeScript 单元测试框架,这是一个用 TypeScript 编写的单元测试框架 - 所以它与 TypeScript 配合得很好(也可以在 JavaScript 中使用)。
似乎还有另一个名为 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.');
}
});