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.
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.
Commentaire le plus utile
Peut-être incorrect à ce sujet, mais le
expect.spyOn
n'est-il pas différent des jasminsspyOn
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 ?