Dans JUnit, vous pouvez échouer à un test en effectuant:
fail("Exception not thrown");
Quel est le meilleur moyen d’obtenir la même chose avec Chai.js?
Il existe de nombreuses façons de simuler un échec - comme la assert.fail()
mentionnée par @DmytroShevchenko -, mais il est généralement possible d’éviter ces béquilles et d’exprimer mieux l’intention du test, ce qui donnera des messages plus significatifs si échouer.
Par exemple, si vous vous attendez à une exception, pourquoi ne pas le dire directement:
expect( function () {
// do stuff here which you expect to throw an exception
} ).to.throw( Error );
Comme vous pouvez le constater, lors du test des exceptions, vous devez inclure votre code dans une fonction anonyme.
Bien sûr, vous pouvez affiner le test en recherchant un type d'erreur plus spécifique, le message d'erreur attendu, etc. Voir .throw
dans la Documentation Chai pour plus d'informations.
Il y a assert.fail()
. Vous pouvez l'utiliser comme ceci:
assert.fail(0, 1, 'Exception not thrown');
Je suis également tombé sur l'absence de fail(msg)
. Pendant un certain temps, j'ai travaillé avec ...
assert.isOk(false, 'timeOut must throw')
(L’utiliser dans des endroits qui ne devraient pas être joignables, c’est-à-dire lors du test de promesse…)
Chai est compatible avec les erreurs standard ES6, donc cela fonctionne:
throw new Error('timeOut must throw')
… Ou, puisque s’affirmer lui-même est essentiellement le même qu’affirmer.isOK … mon préféré est:
assert(false,'timeOut must throw')
… Enfin, presque aussi court que assert.fail(…
.
J'ai fait de cette façon
const expect = require('chai').expect;
const exists = true;
expect(!exists).to.throw('Unknown request type');