¿Alguien sabe cómo puedo probar esta función en Jest? No tengo ninguna idea en este momento, ¿tal vez necesito burlarme de Cookies?
import Cookies from "js-cookie"; import { v4 as uuidv4 } from "uuid"; const setUserCookie = () => { if (!Cookies.get("UserToken")) { Cookies.set("UserToken", uuidv4(), { expires: 10 }); } }; export default setUserCookie;Intenté esto por ahora, pero no sé si esto es correcto, no creo que pruebe la funcionalidad de mi función:
import Cookies from 'js-cookie'; import setCookie from './setCookie'; describe("setCookie", () => { it("should set cookie", () => { const mockSet = jest.fn(); Cookies.set = mockSet; Cookies.set('testCookie', 'testValue'); setCookie() expect(mockSet).toBeCalled(); }); });La mejor manera de probar esto es utilizar la lógica real, por lo que cambiaría su prueba a la siguiente:
it("should set cookie", () => { // execute actual logic setCookie(); // retrieve the result const resultCookie = Cookies.get(); // expects here expect(resultCookie["UserToken"]).toBeTruthy(); // expects for other values here... }); Tenga en cuenta que uuidv4() generará un nuevo valor para cada nueva ejecución de prueba, lo que significa que no puede esperar el mismo valor para la propiedad "UserToken" . En su lugar, puede utilizar el siguiente enfoque para abordar este problema:
Primero configure un espía para ello:
import { v4 as uuidv4 } from "uuid"; jest.mock('uuid');Luego agregue su implementación simulada con el resultado esperado en la prueba unitaria:
const expectedUUIDV4 = 'testId'; uuidv4.mockImplementation(() => expectedUUIDV4); // then expecting that in the result expect(resultCookie["UserToken"]).toEqual(expectedUUIDV4);