Jest: funcionalidad de espionaje

Creado en 20 sept. 2016  ·  3Comentarios  ·  Fuente: facebook/jest

Estoy tratando de descubrir cómo abordar mejor el siguiente caso de uso en broma.

No quiero simular la función, solo espiarla y dejar que la implementación original haga el trabajo. Digamos que quiero rastrear cuántas veces se llamó a la consulta en el controlador de postgres. El siguiente enfoque funciona:

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

El problema es que también tengo que asignar la implementación original al final de la prueba para que no afecte a otros en el mismo archivo. Por lo tanto, es fácil romper el aislamiento de la prueba si una persona olvida tal limpieza.

También noté que jasmine tiene spyOn, que también parece funcionar en broma (pero no está documentado), lo cual es bastante elegante, por lo que se puede lograr lo mismo:

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

Y jasmine afirman eliminar el espía automáticamente después de la prueba, lo cual es increíble.

¿Pero no estoy seguro si eso es algo que se convertirá en parte oficial de la broma? El problema es que los espías de jazmín tienen una interfaz diferente a la de los simulacros en broma. Así que creo que lo mejor sería extender la funcionalidad simulada para que pueda usarse fácilmente para espiar usando spyOn o algo similar.

Cualquier comentario bienvenido.

Comentario más útil

Tal vez sea incorrecto sobre esto, pero ¿no es el expect.spyOn diferente a los jazmines spyOn en que no realiza la 'restauración automática' reclamada al final de una prueba? Creo que esta característica es bastante ordenada y aclara los archivos de especificaciones. ¿Habrá algún plan para agregar este tipo de funciones al integrar #1679?

Todos 3 comentarios

Esto se rastrea como parte de #1679.

Tal vez sea incorrecto sobre esto, pero ¿no es el expect.spyOn diferente a los jazmines spyOn en que no realiza la 'restauración automática' reclamada al final de una prueba? Creo que esta característica es bastante ordenada y aclara los archivos de especificaciones. ¿Habrá algún plan para agregar este tipo de funciones al integrar #1679?

Véase también #2534.

¿Fue útil esta página
0 / 5 - 0 calificaciones