Tengo una aplicación NextJS que usa MongoDB. Acabo de agregar Jest para probar. Cuando ejecuto la primera prueba me sale el siguiente error:
Defina la variable de entorno MONGODB_URI dentro de .env.local
4 | 5 | if (!MONGODB_URI) { > 6 | throw new Error('Please define the MONGODB_URI environment variable inside .env.local'); | ^ 7 | } Tengo un archivo .env.local que tiene MONGODB_URI y funciona cuando ejecuto mi aplicación localmente y en prod.
Esta es la prueba:
import React from 'react'; import ReactDom from 'react-dom'; import Home from '../../pages/index'; import { configure, shallow } from 'enzyme'; import Adapter from '@wojtekmaj/enzyme-adapter-react-17'; configure({ adapter: new Adapter() }); describe('<Home />', () => { it('should render Home', () => { const wrapper = shallow(<Home />); console.log('wrapper :', wrapper.debug()); }); });Mi jest.config.js:
module.exports = { clearMocks: true, coverageDirectory: 'coverage', moduleNameMapper: { '\\.(jpg|jpeg|png|gif|eot|otf|webp|svg|ttf|woff|woff2|mp4|webm|wav|mp3|m4a|aac|oga)$': '<rootDir>/__mocks__/fileMock.js', '\\.(css|less)$': 'identity-obj-proxy' }, preset: '@shelf/jest-mongodb' };¿Que me estoy perdiendo aqui?
El .env.local no se carga en el entorno de prueba, ya que espera que las pruebas produzcan los mismos resultados para todos.
Pero aún puede usar variables de entorno para las pruebas.
Puede usar un archivo env.test y agregar lo siguiente a un archivo globalSetup.js
... import { loadEnvConfig } from '@next/env' export default async () => { const projectDir = process.cwd() loadEnvConfig(projectDir) } ... Asegúrate de configurar el archivo globalSetup.js en el archivo jest.config.js :
... globalSetup: ['<rootDir>/test/globalSetup.js'] // path to file ...Cuando ejecute sus pruebas, debería haber un registro en la consola:
Loaded env from C:\Users\XXX\XXX\XXX\nextjs\.env.testMás información aquí: Documentación de variables de entorno de Next.js
Puede usar el paquete dotenv para el entorno de prueba con el archivo env.local.
Agregue esto en su archivo jest-setup.js:
import dotenv from 'dotenv' dotenv.config({ path: '.env.local' })tendrá que pasar la opción setupFiles en jest.config.js
module.exports = { setupFiles: ['env.local.config file'], } para usar MONGODB_URI en las pruebas
en nextJS, uso .env.test para el entorno de prueba.