web-dev-qa-db-fra.com

Sinon, appels stubFake argument

J'ai eu les talons suivants fonctionnant parfaitement avant

sinon.stub(console, 'log', () => {
    // Check what the arguments holds 
    // And either console.info it or do nothing
});

Par exemple, ajouter console.info(arguments) à cet endroit me montrerait ce que console.log recevait.

Avec la version 2xx, je suis passé à callsFake:

sinon.stub(console, 'log').callsFake(() => {
    // Check what the arguments holds
    // And either console.info it or do nothing
});

Cela fonctionne plus longtemps maintenant. console.info(arguments) a les valeurs Bazaar et rien à voir avec ce que console.log passe. 

Qu'est-ce que je fais mal?!

10
Kousha

La fonction de flèche que vous passez à callsFake ne reçoit pas l'objet arguments comme vous le feriez normalement dans une fonction normale.

De MDN

Une expression de fonction de flèche a une syntaxe plus courte qu'une expression de fonction et n'a pas de propre syntaxe this, arguments , super ou new.target.

Changez votre fonction de flèche en une fonction anonyme régulière (function() {...}) ou utilisez l'opérateur spread pour décompresser explicitement les arguments:

sinon.stub(console, 'log')
console.log.callsFake((...args) => {
  console.info(args)
});
3
philipisapain