Un esquema de mi código es este:
const apiOnePost = async (data) => { console.log('posting the data'); }; const apiTwoPost = async (data) => { console.log('posting the data'); return 'id'; }; const apiTwoGet = async (id) => { console.log('getting the data'); return { rawData: 'foo' } } // Allready united tested const mapData = (raw) => { return { data: raw.rawData } } const businessFunction = async (data) => { await apiOnePost(data); let id = await apiTwoPost(data) let raw = apiTwoGet(id); return mapData(raw); }Mi objetivo es probar la función businessFunction (que es la única función que se exporta desde el archivo, mapData en realidad está en un archivo separado)
Pero como puede ver, no puedo simplemente importar businessFunction en mi archivo de prueba y ejecutar afirmaciones porque todo lo que hace es hacer llamadas a API y mapear los resultados.
Se supone estrictamente que mi prueba no debe enviar datos hacia y desde las API.
Si me burlo de las apis, ¿cómo hago para que la función use esas apis simuladas en lugar de las cosas reales cuando las ejecuto para probar mis afirmaciones?
Si alguien tiene curiosidad, la solución que terminé eligiendo fue separar cada publicación de API en su propio módulo e importarlos en la función principal, luego ejecutar aserciones en la función principal fue trivial porque podía usar jest.mock() en cada llamada de API.