He escrito una función asíncrona en un archivo llamado index.js de la siguiente manera:
module.exports.func = async (obj) => { return { statusCode: 200, body: JSON.stringify({ message: 'Success!', input: obj, }), }; };Sin embargo, cuando trato de escribir un archivo de prueba llamado index.test.js, con el siguiente código:
const exportedModule = require('./index'); test('Successfully execute func when empty object passed', () => { const obj = {}; const expectedReturn = { statusCode: 200, body: JSON.stringify({ message: 'Success!', input: obj, }), }; const actualReturn = await exportedModule.func(obj); console.log(actualReturn); expect(actualReturn).toBe(expectedReturn); }); , aparece un error que dice que exportedModule.func no es asíncrono, aunque claramente lo es. No puedo usar promesas ( .then y .catch ) para ejecutar las pruebas, ya que el archivo de prueba se considerará terminado antes de que se ejecute el código en .then / .catch . ¿Hay alguna forma en que se supone que debo importar correctamente la func de modo que pueda usar await ? Idealmente, me gustaría que esto se hiciera dentro del propio archivo de prueba sin cambiar index.js.
Recibo un error que dice que exportedModule.func no es asíncrono
Creo que estás leyendo mal el error. Está diciendo que la función en su prueba no es async . Solo puede usar await en una función async . Para solucionarlo, agregue async a la función.
// added: VVVVV test('Successfully execute func when empty object passed', async () => {