Comment tester si une fonction appelle une méthode/fonction?

Est-il un moyen de Moka pour tester si une fonction appelle une méthode spécifique ou une fonction externe?

Je suis à l'aide de Moka avec Chai, mais je suis ouvert à toute autre affirmation des bibliothèques.


Ok, donc à tester si une méthode au est appelée est assez facile à utiliser sinon. Je ne suis pas sûr au sujet des tests pour voir si une fonction externe est appelé. J'ai donc mis à jour les exemples de représenter quelque chose d'un peu plus de "monde réel". Je suis en train de travailler sur un nœud de l'application, de sorte foo.js et bar.js sont les deux modules.

Exemple:

foo.js

var bar = require('bar');
var xyz = function () {};

var Foo = module.exports = function () {
  this.bar();
  bar();
  xyz();
};
Foo.prototype.bar = function () {};

bar.js

var bar = module.exports = function () {};

fooSpec.js

var chai      = require('chai');
var sinon     = require('sinon');
var sinonChai = require('sinonChai');
var expect    = chai.expect;
var Foo       = require('../lib/foo');

chai.use('sinonChai');

describe('Foo', function () {

  var method;

  beforeEach(function (done) {
    method = sinon.spy(Foo.prototype, 'bar');
    done();
  });
  afterEach(function (done) {
    method.restore();
    done();
  });

  it('should call Foo.prototype.bar() immediately', function () {

    new Foo();
    expect(method).to.have.been.called;

  });

  it('should call the module bar immediately', function () {
    //????????????
  });

  it('should call xyz() immediately', function () {
    //????????????
  });
});

Donc, comme vous pouvez le voir, j'ai compris comment le test pour Foo.prototype.bar, mais je ne peux pas trouver un moyen de mettre en œuvre les deuxième et troisième essais.

Si vos extraits sont destinés à être des modules qu'il serait utile de montrer ce que c'est vous dire à exporter à partir de vos modules, parce que c'est important pour le genre de réponses que vous allez obtenir.
J'ai mis à jour l'exemple avec plus de détails. Les fichiers d'exemple sont des modules dans un nœud de l'application.

OriginalL'auteur Hal Carleton | 2014-11-02