105 votes

Chai: comment tester si une variable est indéfinie avec la syntaxe 'should'

S'appuyant sur ce tutoriel testant une application angularjs avec chai, je veux ajouter un test pour une valeur non définie en utilisant le style "should". Ceci échoue :

it ('ne peut pas jouer en dehors du plateau', function() {
  scope.play(10).should.be.undefined;
});

avec l'erreur "TypeError: Impossible de lire la propriété 'should' de non défini", mais le test passe avec le style "expect" :

it ('ne peut pas jouer en dehors du plateau', function() {
  chai.expect(scope.play(10)).to.be.undefined;
});

Comment puis-je le faire fonctionner avec "should" ?

8voto

EpokK Points 11131

Essaie ceci:

it ('ne peut pas jouer en dehors du plateau', function() {
   expect(scope.play(10)).to.be.undefined; // indéfini
   expect(scope.play(10)).to.not.be.undefined; // ou non
});

3voto

Yarovoy Points 639

N'oubliez pas la combinaison des mots-clés have et not :

const chai = require('chai');
chai.should();
// ...
userData.should.not.have.property('passwordHash');

1voto

Andy Polhill Points 291

La réponse de @david-norman est correcte selon la documentation, j'avais quelques problèmes avec la configuration et j'ai plutôt opté pour ce qui suit.

(typeof scope.play(10)).should.be.undefined;

0voto

pegli Points 91

Vous pouvez envelopper le résultat de votre fonction dans should() et tester pour un type de "undefined" :

it ('ne peut pas jouer en dehors du plateau', function() {
  should(scope.play(10)).be.type('undefined');
});

Prograide.com

Prograide est une communauté de développeurs qui cherche à élargir la connaissance de la programmation au-delà de l'anglais.
Pour cela nous avons les plus grands doutes résolus en français et vous pouvez aussi poser vos propres questions ou résoudre celles des autres.

Powered by:

X