Réinitialiser l'appel sur Jasmine espion ne revient pas
Je suis en utilisant un Jasmin (2.2.0) espion pour voir si un certain callback est appelée.
Code de Test:
it('tests', function(done) {
var spy = jasmine.createSpy('mySpy');
objectUnderTest.someFunction(spy).then(function() {
expect(spy).toHaveBeenCalled();
done();
});
});
Cela fonctionne comme prévu. Mais maintenant, je vais ajouter une deuxième niveau:
it('tests deeper', function(done) {
var spy = jasmine.createSpy('mySpy');
objectUnderTest.someFunction(spy).then(function() {
expect(spy).toHaveBeenCalled();
spy.reset();
return objectUnderTest.someFunction(spy);
}).then(function() {
expect(spy.toHaveBeenCalled());
expect(spy.callCount).toBe(1);
done();
});
});
Ce test ne retourne jamais, apparemment parce que le done
de rappel n'est jamais appelée. Si je supprime la ligne spy.reset()
le test n'est fini, mais, évidemment, échoue sur la dernière attente. Cependant, la callCount
champ semble être undefined
plutôt que de 2
.
source d'informationauteur Jorn
Vous devez vous connecter pour publier un commentaire.
La syntaxe de Jasmin 2 est différent de 1,3 à l'égard de l'espionnage et des fonctions.
Voir Jasmine docs ici.
Spécifiquement de la réinitialisation d'un espion avec
spy.calls.reset();
C'est de cette façon que le test devrait ressembler à:
Voir tripoter ici
Une autre façon de l'écrire: