Así que tengo un problema extraño en el que no puedo simular módulos si no están en el ámbito global.
P.ej:
// constants.js exports.SUPPORTED_LANGUAGES = ['en', 'de'] // file-to-test.js const { SUPPORTED_LANGUAGES } = require('./constants') exports.asyncFnToTest = async () => { const something = SUPPORTED_LANGUAGES.map(() => { // do stuff... }); }Y aquí está la parte pegadiza:
// file-to-test.test.js const { asyncFnToTest } = require('./file-to-test') it('should test asyncFnToTest', async () => { jest.mock('./constants', () => ({ SUPPORTED_LANGUAGES: ['mock', 'lang']; })); const { SUPPORTED_LANGUAGES } = require('./constants'); console.log(SUPPORTED_LANGUAGES); // OUTPUT is: ['en', 'de'] instead of ['mock', 'lang'] });PERO si el simulacro está en el ámbito global de esta manera:
// file-to-test.test.js const { asyncFnToTest } = require('./file-to-test'); const { SUPPORTED_LANGUAGES } = require('./constants'); jest.mock('./constants', () => ({ SUPPORTED_LANGUAGES: ['mock', 'lang']; })); it('should test asyncFnToTest', async () => { console.log(SUPPORTED_LANGUAGES); // OUTPUT is: ['mock', 'lang'] }); El segundo enfoque funciona bien para funciones como puedo .mockReturnValue() o .mockImplementation(), por lo que puedo establecer escenarios de prueba, sin embargo, SUPPORTED_LANGUAGES es una matriz, por lo que no puedo cambiar el valor simulado inicial.
¿Alguien puede decirme por qué no puedo simular módulos dentro de mis casos de prueba o si hay una manera de sobrescribir la matriz en el ámbito global para un caso de prueba específico?