web-dev-qa-db-fra.com

Test des exceptions JS avec Mocha / Chai

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?

25
TheDelChop

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.

25
plalx

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.

37
Idan Wender