Je sais, TypeScript a un jour. Mais je suis curieux de savoir s’il existe un framework de test unitaire ou une méthode pour écrire et exécuter des tests unitaires pour TypeScript?
TypeScript peut être compilé en JavaScript et je peux écrire un test pour ce JavaScript, mais ce n'est pas ce que je veux.
TypeScript n'est pas un langage d'exécution. Pour exécuter votre code TypeScript, vous devez d’abord le compiler en JavaScript; il en va de même pour le tester . Vos tests peuvent également être en TypeScript, compiler à la fois en JavaScript et utiliser votre framework de test préféré pour exécuter les tests.
Vous pouvez écrire vos tests unitaires en TypeScript ou JavaScript, en utilisant l’un des frameworks de tests unitaires JavaScript existants.
Très bientôt, j'imagine que les frameworks existants obtiendront des fichiers de définition typeScript (update - ils ont: http://definitelytyped.org/ ), ce qui les rendra typés statiquement en ce qui concerne TypeScript. En attendant, vous devrez peut-être lire les déclarations ambiantes et en ajouter quelques-unes au début de vos tests.
Alternativement, vous pouvez utiliser tsUnit TypeScript Framework Testing Framework , qui est un framework de test unitaire écrit en TypeScript - pour que Nice, avec Nice, puisse jouer en même temps.
On dirait qu'il existe un autre environnement de test/framework appelé Intern. https://theintern.github.io/
Voici un article expliquant comment l’utiliser en combinaison avec TypeScript: https://www.sitepen.com/blog/2015/03/24/testing-TypeScript-with-intern/
Cela semble très prometteur lorsque vous utilisez TypeScript et que vous recherchez une configuration de test unitaire prenant en charge les mappages source.
Exemple de test:
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.');
}
});