Mon objet de service ressemble à ceci:
expect(appService.serviceTwo.query).toHaveBeenCalled();
4 Réponses :
OK, j'ai eu ce fonctionnement avec ceci:
appService: {
serviceOne: jasmine.createSpyObj('serviceOne', ['get']),
serviceTwo: jasmine.createSpyObj('serviceTwo', ['query'])
}
C'est l'approche optimale. En informatique, les deux 'get' code> et 'requête' code> sont des méthodes d'espionnage. Ainsi, quelque chose comme attendre (appserver.service.servicetwo.Query) .tohavebeEnCalled () code> est disponible.
Il suffit de remplacer la fonction avec Jasmine Spies: plus tard sur: p>
Et si vous vouliez SPYON CODE> au lieu de le faire - est-ce possible?
J'ai rencontré un problème très similaire et j'ai une solution au travail qui permet d'espionner plusieurs niveaux relativement facilement.
expect(appService.serviceOne).toHaveBeenCalledWith('foobar');
expect(appService.serviceOne().get).toHaveBeenCalledWith('some', 'params');
Les exemples ci-dessus montrent explicitement, nommé Spy Creation. Cependant, on peut simplement continuer à enchaîner dans la fonction pour un objet profondément imbriqué: p> jasmin.spyon code> pour accéder au niveau de la méthode.
Vous devriez accepter une réponse. Il y en a 2 ici ce travail