|
|
## Préambule
|
|
|
|
|
|
- Documentation disponible [ici](http://qunitjs.com/).
|
|
|
|
|
|
- Lancez tous vos tests en chargeant les pages tests individuelles ou les pages tests suites.
|
|
|
|
|
|
- En QUnit on retrouvera des tests cases sous la forme de prototypes '''test'''
|
|
|
- les tests se construisent autour des assertions de type (assert.ok, assert.equal, assert.notEqual...)
|
|
|
|
|
|
- les tests suite sont rendus possibles par qunit-composite.js :
|
|
|
- QUnit.testSuites(["./money_testA.html","./money_testB.html"]);
|
|
|
|
|
|
## Travail à effectuer (1ère séance)
|
|
|
|
|
|
- Les codes relatives à Money src et test en JS
|
|
|
- [money_js.zip (src et test)](http://www.fil.univ-lille1.fr/~bilasco/OTI/money_js.zip)
|
|
|
|
|
|
- Corrigez les money.js et money_ops.js de telle sorte à ce que tous les tests écrits soit valides
|
|
|
- les tests se trouvent écrits en test/money_*.js
|
|
|
- l'exécution des tests se réalisent en chargeant les pages test/money_*.html
|
|
|
|
|
|
- Vous travaillerez sur les fichiers src/index.html, src/calc.js plus tard ...
|
|
|
|
|
|
### Créer des nouveaux méthodes de test
|
|
|
- Etendre le testcase money_test pour couvrir le plus possible les cas de figures possibles (par exemple création de money < 0, currency > 3 caractères, etc..)
|
|
|
|
|
|
- Créer des nouvelles opérations et les testcases correspondants
|
|
|
- par exemple : soustraction (v1 - v2 avec une exception si v1 < v2 ou si pas la même unité monétaire)
|
|
|
- pour créer vos propres exceptions
|
|
|
```
|
|
|
function MonPropreEx(...) {}
|
|
|
|
|
|
function xxx () {
|
|
|
...
|
|
|
throw new MonPropreExc(...);
|
|
|
}
|
|
|
```
|
|
|
- pour indiquer qu'un test doit lever une exception, placer ce code dans la fonction de test
|
|
|
```
|
|
|
assert.throws(function() {var m3=MoneyOps.add(m1,m2)}, DevisesIncompatibleExc, "Devises Incompatibles");
|
|
|
```
|
|
|
|
|
|
### Fabrique
|
|
|
- Créer une Fabrique des Money qui permet de créer un ensemble prédéfini des devises
|
|
|
- Prévoir des exceptions et ecrivez des tests pour garantir le bon fonctionnement de la fabrique
|
|
|
|
|
|
## 2eme séance
|
|
|
|
|
|
### Tests avec fixtures
|
|
|
|
|
|
- Etudiez le src/index.html et src/calc.js
|
|
|
- En test/calc_test.js vous trouvez des tests qui simulent le remplissage du formulaire permettant de réaliser les calculs
|
|
|
- On y trouve des tests pour vérifier que les calculs se font bien (calc.computeResult)
|
|
|
- On y trouve des tests pour vérifier que le rendu se fait bien (calc.displayResult)
|
|
|
|
|
|
- Exemple de __fixture__
|
|
|
```
|
|
|
var fixture="";
|
|
|
fixture+=("<div id='res'></div>");
|
|
|
fixture+=("<form id='form0'>");
|
|
|
fixture+=("<input type='text' id='v1' name='v1' value='2'/>");
|
|
|
fixture+=("<input type='text' id='c1' name='c1' value='EU'/>");
|
|
|
fixture+=("<input type='text' id='v2' name='v2' value='2'/>");
|
|
|
fixture+=("<input type='text' id='c2' name='c2' value='EU'/>");
|
|
|
fixture+=("<input type='text' id='ops' name='ops' value='ADD'/>");
|
|
|
fixture+=("</form>");
|
|
|
|
|
|
|
|
|
var fixtureNode=document.getElementById("qunit-fixture");
|
|
|
fixtureNode.innerHTML=fixture;
|
|
|
```
|
|
|
|
|
|
- Construisez un test qui vérifie que le message "Devises incompatibles ... " s'affiche, lorsque les devises ne sont pas compatibles.
|
|
|
|
|
|
- Modifiez les fichiers (index.html, calc.js) pour supporter également l'opération de soustraction implémentée précédemment
|
|
|
|
|
|
- Créez également des nouveaux tests (selon le modèle calc_test.js) pour couvrir cette nouvelle opération
|
|
|
|
|
|
- Modifiez le code de la fonction displayResult de telle sorte à ce que le texte soit affiché en rouge si une erreur est apparue dans le processus (devises incompatibles, soustraction impossible, etc.).
|
|
|
|
|
|
- Créez également des nouveaux tests (selon le modèle calc_test.js) pour couvrir cette nouvelle opération
|
|
|
|
|
|
|
|
|
### Assertion des alertes
|
|
|
- Modifiez le code javascript fourni de telle sorte à ce que cela généré une alerte (window.alert) lorsque l'opération n'est pas réalisable
|
|
|
- Ecrivez des tests pour valider que les alertes sont bien déclenchées.
|
|
|
|
|
|
### Renforcer les tests
|
|
|
- Que se passe-t-il lorsque vous demandez d'ajouter des moneys dont soit la valeur, soit la currency ne respectent pas les contraintes imposées ?
|
|
|
- Modifiez le code calc.js pour prendre en compte les éventuelles modifications.
|
|
|
- Ecrivez des tests pour couvrir les nouveaux cas de figure identifiés.
|
|
|
|
|
|
### Tests "croisés" (optionnel)
|
|
|
- Une fois que vous estimez avoir corrigé le code envoyez-le à la personne à votre gauche, en mettant en place un svn/hg/git de commun accord.
|
|
|
|
|
|
- Demandez-lui de tester votre code.
|
|
|
|
|
|
|
|
|
### Rendu
|
|
|
- Déposer sur PROF une archive du travail effectué en fin de journée (fermeture après la séance TPA)
|
|
|
- Un deuxième dépôt sera ouvert jusqu'à la fin des cours |
|
|
\ No newline at end of file |