Jest: fonctionnalité espion

Créé le 20 sept. 2016  ·  3Commentaires  ·  Source: facebook/jest

J'essaie de comprendre comment aborder au mieux le cas d'utilisation suivant en plaisantant.

Je ne veux pas me moquer de la fonction, il suffit de l'espionner et de laisser la mise en œuvre d'origine faire le travail. Disons que je veux savoir combien de fois la requête a été appelée sur le pilote postgres. L'approche suivante fonctionne :

const querySpy = pg.Client.prototype.query = jest.fn(pg.Client.prototype.query);
expect(querySpy.mock.calls.length).toBe(2)

Le problème est que je dois également attribuer l'implémentation d'origine à la fin du test afin que cela n'affecte pas les autres dans le même fichier. Il est donc simple de briser l'isolement des tests si une personne oublie un tel nettoyage.

J'ai également remarqué que jasmine a spyOn qui semble également fonctionner en plaisantant (mais pas documenté), ce qui est assez élégant, donc la même chose peut être réalisée par:

const querySpy = spyOn(pg.Client.prototype, 'query').and.callThrough();
expect(querySpy.calls.count()).toEqual(3);

Et Jasmine prétend supprimer l'espion après le test automatiquement, ce qui est génial.

Mais vous ne savez pas si c'est quelque chose qui deviendra une partie officielle de la plaisanterie ? Le problème est que les espions de jasmin ont une interface différente de celle des moqueries en plaisantant. Je pense donc que le mieux serait d'étendre simplement la fonctionnalité de simulation afin qu'elle puisse être facilement utilisée pour espionner en utilisant spyOn ou quelque chose de similaire.

Tout commentaire est le bienvenu.

Commentaire le plus utile

Peut-être incorrect à ce sujet, mais le expect.spyOn n'est-il pas différent des jasmins spyOn en ce sens qu'il ne fait pas la "restauration automatique" revendiquée à la fin d'un test ? Je pense que cette fonctionnalité est assez soignée et efface les fichiers de spécifications. Y aura-t-il des plans pour ajouter ce type de fonctionnalité lors de l'intégration de #1679 ?

Tous les 3 commentaires

Ceci est suivi dans le cadre de #1679.

Peut-être incorrect à ce sujet, mais le expect.spyOn n'est-il pas différent des jasmins spyOn en ce sens qu'il ne fait pas la "restauration automatique" revendiquée à la fin d'un test ? Je pense que cette fonctionnalité est assez soignée et efface les fichiers de spécifications. Y aura-t-il des plans pour ajouter ce type de fonctionnalité lors de l'intégration de #1679 ?

Voir aussi #2534.

Cette page vous a été utile?
0 / 5 - 0 notes