Soy nuevo en JEST y actualmente estoy probando un componente de Javascript que realiza una llamada a la API en su onComponentDidMount. Dependiendo de los datos de retorno de la llamada ajax (llamada api), mi componente muestra una tabla o un texto simple.
Mi prueba JEST es bastante simple, por ahora solo estoy probando para que coincida con las instantáneas actuales. Entonces, dado que mi llamada API puede devolver datos diferentes, mi instantánea puede tener dos aspectos diferentes: 1) uno con una tabla 2) uno con un texto simple.
Me burlé con éxito del servicio así.
jest.mock("/myService", () => ({ index: (data, callback) => { const return = [ { {...} }, ] callback(return) }, })) Mi componente realiza la llamada myService.index() correctamente, todo lo que deseo es pasarle diferentes valores que usará para realizar la devolución de llamada.
Así es como se ve
it("has proper snapshot", () => { const props = {...} const component = shallow(<MyComponent {...props} />) expect(component).toMatchSnapshot() })Esto funciona muy bien para el primer ejemplo, pero parece que no puedo encontrar una respuesta correcta que me convenga. Me puedes ayudar ? :)
1- Si desea que el simulacro arroje resultados diferentes en cada llamada:
Usar mockReturnValueOnce
myMock .mockReturnValueOnce(10) .mockReturnValueOnce('x') .mockReturnValue(true); devolverá 10 en la primera llamada, 'x' en la segunda llamada y true en cualquier momento después de eso.
2- Si quieres comprobar los argumentos con los que se ha llamado al simulacro:
expect(mock).toHaveBeenNthCalledWith(1, '1st call args'); expect(mock).toHaveBeenNthCalledWith(2, '2nd call arg 1', '2nd call arg 2');afirmará que
el mock se llamó con '1st call args' la primera vez que se llamó -> mock('1st call args')
el mock se llamó con '2nd call arg 1' y '2nd call arg 2' la segunda vez que se llamó -> mock('2nd call arg 1', '2nd call arg 2')
3- Si desea una respuesta específica basada en el parámetro de función
No es compatible con jest de forma predeterminada, pero puede echar un vistazo a jest-when, que le permite hacer algo como:
when(fn).calledWith(1).mockReturnValue('yay!')Consulte los documentos de Jest sobre esto. Puede devolver diferentes valores cuando se burla de una función y una vez devolver un valor que desee y luego un valor diferente.