Dire que j'ai un objet dans mon code, disons un utilisateur.NodeJS, Sinon: Comment tester certaines fonctions sont appelées à un événement
L'utilisateur est un eventEmitter donc dans de nombreux endroits dans le code que je aime:
User.on('register', notifyFriends);
User.on('register', sendWelcomeEmail);
Ces lignes sont dans des fichiers différents en principal.
Je veux vous assurer que les fonctions correspondantes sont appelées dans mon test si je fais quelque chose comme ceci:
describe('User Events',() => {
before(() => {
sinon.stub(userListeners, 'notifyFriends').callsFake(async() => {});
});
after(() => {
userListeners.notifyFriends.restore();
});
describe('register',() => {
it('should trigger the "notifyFriends" handler once user is registered',() => {
UserModel.emit('register');
expect(userListeners.notifyFriends).to.be.calledOnce();
});
});
});
problème est la fonction est exécutée après l'instruction alors attendez-vous le test échoue évidemment.
Un moyen facile de le résoudre est d'exécuter l'attendre à l'intérieur d'un bloc de délai d'attente et nous espérons que la fonction est appelée dans le temps imparti.
Mais je veux savoir s'il existe une meilleure façon de le faire.