Jasmine n'est pas réinitialisée espion après chaque test spec
J'ai la spécification suivante.
describe("SN.ExitHistory", function() {
var exitHistory;
beforeEach(function() {
SN.Utils = jasmine.createSpy("utils").andCallFake(function() {
function readSNCookie(cookieName, key) {
return "google.com";
}
function isUndefinedOrNull(param) {
return (param == null) || (param === "null");
}
function createSNCookie(snCookieName, key, value, lifeTime) {
}
var me = {
readSNCookie : readSNCookie,
isUndefinedOrNull : isUndefinedOrNull,
createSNCookie : createSNCookie
};
return me;
})();
exitHistory = SN.ExitHistory();
});
it("return last exit link", function() {
expect(exitHistory.getLastExitLink()).toEqual("google.com");
});
});
exitHistory.getLastExitLink
utiliser à l'interne SN.Utils
.
Après le test est fait de Jasmin ne pas supprimer l'espion objet utils. Dans la prochaine suite de test aussi, je peux voir la même utils présent. Est-il possible de réinitialiser l'espion objet après chaque test est fait?
Au lieu de créer un espion, si je crée un nouvel objet pour utils, le comportement est le même. Alors quelle est la différence entre un espion et l'objet réel dans ce scénario.
Corrigez-moi si je me trompe.
OriginalL'auteur Sourabh | 2012-08-10
Vous devez vous connecter pour publier un commentaire.
J'ai eu le même problème il y a quelques temps et après des jours de galère, j'ai trouvé la solution. Si vous utilisez l'autre façon, votre espion sera réinitialisée, alors essayez avec
Espions sont décrites ici:
https://github.com/pivotal/jasmine/wiki/Spies
createSpy
est maintenant obsolète et il y a un commentaire dans les sources avant decreateSpy
définition que vous ne devriez pas utiliser cette méthode interne.et cette réponse est juste, en passant, il permettra de résoudre les problèmes de l'auteur
ah, désolé, c'est
jasmine.Spy()
qui n'est pas autorisé à être appelé: > Note: Do <b>non</b> appelnew jasmine.Spy()
directement - un espion doit être créé à l'aide despyOn
,jasmine.createSpy
oujasmine.createSpyObj
de toute façon,spyOn
est la chose que l'auteur a besoin.createSpy
est compatible uniquement avec l'espionnage des fonctions, non à l'objet lié méthodes.Cela ne fonctionne pas avec Jasmine 1.0.3 (et aussi loin que je peux dire à partir de la 1.3 code source avec 1.3): pour mon 1.0.3 en fonction de la suite de tests, il dit "<NOM> a déjà été espionné". Je suis la réinitialisation de l'espion à l'aide de
<OBJECT>.<METHOD>.wasCalled = false;
lors de l'essai d'autres attentes.Je ne sais pas où vous avez trouvé les informations que
createSpy
est obsolète - il sert un peu différente de l'utilisation despyOn
et ne pas dire que, dans 1.3.1 commentairesOriginalL'auteur elmendalerenda