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?!
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)
});