hola hola
Tengo un módulo que exporta dos funciones.
// foo.js export const apiClient = axios.create({ baseURL: "www.randomapi.com", }); export const search = async (q: string) => { return apiClient.get("/search.json", {params: { q }); }Y luego otro que importa buscar
// bar.js import { search } from "foo" export const searchByQuery = async (q: string) => { // some process with the Q return (await search(q)).data } Entonces, lo que necesito hacer es burlarme de ese apiClient.get en el uso de búsqueda
//test.js import { searchByQuery } from "bar" jest.mock("./foo.js", () => ({ ...jest.requireActual("./foo.js"), ApiClient: { get: async () => ({ data: { results: [ { "name": "John", "age": 20 }, ], }, }), }, })); test('It should mock', async () => { const result = await searchByQuery("John"); expect(result[0].name).toBe("John"); })El resultado es que apiClient no se está burlando y está haciendo la llamada API real a la URL.
Otra forma de hacerlo sería burlarse de la función de search . Eso es algo que ya hice y fue exitoso pero no es lo que estoy buscando porque quiero probar los errores de randomapi.com
Hice otra prueba usando el mismo simulacro donde se llama apiClient.get desde bar.js y está funcionando.