Comment utiliser les espions Jasmine sur un objet créé à l'intérieur d'une autre méthode?
Donné l'extrait de code suivant, comment voulez-vous créer un Jasmin spyOn
test pour confirmer que doSomething
qui est appelé lorsque vous exécutez MyFunction
?
function MyFunction() {
var foo = new MyCoolObject();
foo.doSomething();
};
Voici ce que mon test ressemble. Malheureusement, j'obtiens une erreur lors de la spyOn
appel est évalué:
describe("MyFunction", function () {
it("calls doSomething", function () {
spyOn(MyCoolObject, "doSomething");
MyFunction();
expect(MyCoolObject.doSomething).toHaveBeenCalled();
});
});
Jasmine ne semble pas reconnaître la doSomething
méthode à ce point. Des suggestions?
source d'informationauteur thinkbigthinksmall
Vous devez être connecté pour publier un commentaire.
Lorsque vous appelez
new MyCoolObject()
vous appelez laMyCoolObject
fonction et d'obtenir un nouvel objet avec le prototype. Cela signifie que lorsque vousspyOn(MyCoolObject, "doSomething")
vous n'êtes pas de la configuration d'un espion de l'objet retourné par lanew
appel, mais sur une possibledoSomething
fonction de laMyCoolObject
fonction elle-même.Vous devriez être en mesure de faire quelque chose comme:
Sinon, comme Gregg a laissé entendre, nous avons pu travailler avec de "prototype". C'est, au lieu de faire de l'espionnage sur MyCoolObject directement, on peut espionner MyCoolObject.le prototype.