En essayant de tester du code qui lève une exception avec Mocha/Chai, mais sans chance, voici le code simple que j'essaie de tester:
class window.VisualizationsManager
test: ->
throw(new Error 'Oh no')
Voici mon test:
describe 'VisualizationsManager', ->
it 'does not permit the construction of new instances', ->
manager = new window.VisualizationsManager
chai.expect(manager.test()).to.throw('Oh no')
Cependant, lorsque j'exécute la spécification, le test échoue et lève l'exception.
Failure/Error: Oh no
qu'est-ce que je fais mal ici?
C'est probablement parce que vous exécutez la fonction immédiatement, donc le framework de test ne peut pas gérer l'erreur.
Essayez quelque chose comme:
chai.expect(manager.test.bind(manager)).to.throw('Oh no')
Si vous savez que vous n'utilisez pas le mot clé this
dans la fonction, je suppose que vous pouvez également passer manager.test
sans le lier.
De plus, votre nom de test ne reflète pas ce que fait le code. S'il ne permet pas la construction de nouvelles instances, manager = new window.VisualizationsManager
devrait échouer.
Soit passez la fonction :
chai.expect(manager.test).to.throw('Oh no');
Ou utilisez une fonction anonyme :
chai.expect(() => manager.test()).to.throw('Oh no');
Voir documentation sur la méthode throw
pour en savoir plus.