Jasmine - Comment espionner les méthodes d'instance
J'ai une fonction
var data = {};
var myFunc = function() {
data.stuff = new ClassName().doA().doB().doC();
};
Je voudrais tester que doA
doB
et doC
étaient tous appelés.
J'ai essayé de l'espionnage sur les méthodes d'instance comme ce
beforeEach(function() {
spyOn(ClassName, 'doA');
};
it('should call doA', function() {
myFunc();
expect(ClassName.doA).toHaveBeenCalled();
});
mais qui me donne juste un "doA() la méthode n'existe pas d'erreur".
Des idées?
source d'informationauteur sfletche
Vous devez vous connecter pour publier un commentaire.
Où vous êtes allé mal était votre compréhension de la façon de se référer à des méthodes en JavaScript dans un contexte statique. Ce que votre code est en train de faire est l'espionnage sur
ClassName.doA
(c'est la fonction assignée à laClassName
constructeur comme la propriétédoA
ce qui n'est pas ce que vous voulez).Si vous voulez détecter lorsque cette méthode est appelée sur une instance de
ClassName
n'importe où, vous avez besoin d'espionner sur le prototype.Bien sûr, cela suppose que
doA
vit dans la chaîne de prototype. Si c'est une propriété, alors il n'y a pas de technique que vous pouvez utiliser sans être en mesure de se référer à l'objet anonyme dansmyFunc
. Si vous aviez accès à laClassName
exemple à l'intérieur d'myFunc
ce serait idéal, car vous pourriez justespyOn
directement cet objet.P. S. Vous devriez vraiment mettre "Jasmin" dans le titre.