TypeScriptは1日前のものです。しかし、私はここに何らかの種類の単体テストフレームワークがあるのか、TypeScriptの単体テストを作成して実行する方法がありますか?
TypeScriptはJavaScriptにコンパイルでき、そのJavaScriptのテストを作成できますが、それは私が望むものではありません。
TypeScriptはランタイム言語ではありません。 TypeScriptコードを実行するには、まずJavaScriptにコンパイルする必要があります。同じことがテストにも当てはまります。テストはTypeScriptでも実行でき、JavaScriptにコンパイルし、好みのテストフレームワークを使用してテストを実行できます。
既存のJavaScript単体テストフレームワークを使用して、TypeScriptまたはJavaScriptで単体テストを作成できます。
すぐに、既存のフレームワークがTypeScriptアンビエント定義ファイルを取得することを想像します(更新-それらは http://definitelytyped.org/ )。これにより、TypeScriptに関する限り静的に型付けされます。それまでの間、環境宣言を読んで、テストの開始時に独自のコードをいくつか追加する必要があるかもしれません。
あるいは、 tsUnit TypeScript Unit Testing Framework を使用できます。これは、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.');
}
});