Tengo la función a continuación. No puedo probar esta función usando el marco Jest.
La función:
exports.example = async function (data) { let utility; if (data.flag) { utility = require('./utility'); } else { utility = require(Runtime.giveFunctions()['utility'].path); } const valueFromUtility = await utility.getValue(data); . . .De la prueba paso el objeto de datos que contiene varias propiedades, entre ellas:
Si de la prueba pasa data.flag === true, la prueba está bien, de lo contrario (data.flag === false) la prueba falla y me dice "utility.getValue no es una función".
En el archivo utility.js, la función getValue devuelve una promesa, como parámetro tiene el objeto de datos que contiene las funciones simuladas que se llamarán en getValue.
La prueba que escribí es la siguiente:
test('Test with flag === false', async () => { jest.mock('../functions/utility', () => () => false); await example(data); });También traté de burlarme de la función getValue de la utilidad para devolver una promesa resuelta:
test('Test with flag === false', async () => { jest.mock('../functions/utility', () => jest.fn().mockReturnValue(Promise.resolve('Some values'))); await example(data); });Finalmente, me burlé de la siguiente manera:
const Runtime = { giveFunctions: jest.fn().mockReturnValue({ utility: jest.fn().mockReturnValue({ path: jest.fn() }) }) }; window.Runtime = Runtime;En el archivo de utilidad solo tengo la función getValue.
¿Como puedó resolver esté problema? gracias a todos de antemano