web-dev-qa-db-fra.com

Propriété Chai non valide lors de l'appel de calledOnce

J'ai des problèmes pour écrire des tests en javascript avec sinon et chai. J'essaie de vérifier si une fonction est appelée sur un espion et d'obtenir "Erreur: propriété Chai non valide: appeléeOnce"

Je fais la même chose dans un autre projet avec les mêmes dépendances de test sans aucun problème ...

var udpSocketStub = this.sandbox.spy(udpSocket, 'send');
expect(udpSocketStub).calledOnce; // SHOULD FAIL


"dependencies": {
  "body-parser": "~1.17.1",
  "bootstrap": "^4.0.0-alpha.6",
  "chai": "^4.1.0",
  "co-mocha": "^1.2.0",
  "cookie-parser": "~1.4.3",
  "debug": "~2.6.3",
  "express": "~4.15.2",
  "jquery": "^3.2.1",
  "mocha": "^3.4.2",
  "morgan": "~1.8.1",
  "node-compass": "0.2.3",
  "pug": "^2.0.0-rc.1",
  "serve-favicon": "~2.4.2",
  "sinon": "^2.3.8",
  "sinon-chai": "^2.12.0"
}
9
user1716970

Vous manquez juste le sinon-chai package, qui ajoute des assertions de type contraire à chai.

npm install --save sinon-chai

Initialisation:

var chai = require('chai');
var sinon = require('sinon');
chai.use(require('sinon-chai'));

Au cas où vous vous poseriez la question, en utilisant le talon ou la fonction d'origine, les deux fonctionnent:

var expect = chai.expect;

var udpSocketStub = this.sandbox.spy(udpSocket, 'send');

// Make a call
updSocket.send({..});

// Both should pass
expect(udpSocketStub).calledOnce;
expect(udpSocket.send).calledOnce;

// Identical, but more readable
expect(udpSocketStub).to.have.been.calledOnce;
expect(udpSocket.send).to.have.been.calledOnce;
18
Overdrivr