Sinon: La méthode de stub dans le même fichier ne fonctionne pas

Créé le 5 oct. 2016  ·  3Commentaires  ·  Source: sinonjs/sinon

J'essaie de tester unitairement une fonction dans un fichier tout en remplaçant une autre fonction dans le MÊME fichier, mais la simulation n'est pas appliquée et la vraie méthode est appelée. Voici un exemple :

// file: 'foo.js'

export function a() {
   // .....
}

export function b() { 
   let stuff = a(); // call a
   // ...do stuff
}

Et mon test :

import * as actions from 'foo';

const aStub = sinon.stub(actions, 'a').returns('mocked return');
actions.b(); // b() is executed, which calls a() instead of the expected aStub()

Tous les 3 commentaires

Pensez à ce à quoi cela ressemblerait dans l'ES5 standard. Chaque fonction est exportée avec un certain nom sur l'objet d'exportation, mais elle est également référencée en interne à l'aide du nom de la fonction. Nous parlons de deux références différentes. Lors du stub, vous modifiez la référence externe. La référence interne est conservée la même. Vous ne pouvez pas le modifier, sauf si vous créez un injecteur de dépendance explicite (comme une fonction setter à usage interne). Ce n'est pas un bug, mais une fonctionnalité de JavaScript.

existe-t-il une solution de contournement à ce sujet ??? Il est assez courant de rencontrer ce genre de problème lors du test d'un fichier nodejs.

Ceci est couvert dans notre documentation, dans la section comment:
http://sinonjs.org/how-to/link-seams-commonjs/

Cette page vous a été utile?
0 / 5 - 0 notes