es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

Error de referencia: no se puede acceder a ‘jest_mock_extended_1’ antes de la inicialización.

Tengo el siguiente código.

singleton.ts

import prisma from “../prismaClient”;
import { mockDeep, mockReset } from “jest-mock-extended”;
import { PrismaClient } from “@prisma/client”;
import { DeepMockProxy } from “jest-mock-extended/lib/cjs/Mock”;

jest.mock(“../prismaClient”, () => ({
__esModule: true,

default: mockDeep(),
}));

beforeEach(() => {
mockReset(prismaMock);
});

export const prismaMock = prisma as unknown as DeepMockProxy;

prismaClient.ts

import { PrismaClient } from “@prisma/client”;

const prisma = new PrismaClient({
log: [
{
emit: “event”,
level: “query”,
},
{
emit: “stdout”,
level: “error”,
},
{
emit: “stdout”,
level: “info”,
},
{
emit: “stdout”,
level: “warn”,
},
],
});

export default prisma;

Estoy siguiendo la guía de prisma para pruebas unitarias aquí: https://www.prisma.io/docs/guides/testing/unit-testing. No sé por qué sigo obteniendo este error:

Este es el mensaje de error
ReferenceError: Cannot access ‘jest-mock-extended_1’ before initialization

    7 |   __esModule: true,
    8 |
>   9 |   default: mockDeep<prismaclient>(),
        ^
   10 | }));
   11 |
   12 | beforeEach(() => {

  en src/utils/testUtils/singleton.ts:9:12
  en Object.<anonymous> (src/utils/testUtils/singleton.ts:1:1)
  en Object.<anonymous> (src/resolvers/functions/user.test.ts:1:1)</anonymous></anonymous></prismaclient></prismaclient></prismaclient>
Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Parece haber un problema con la importación de la función mockDeep desde jest-mock-extended. Este error ocurre porque la librería jest-mock-extended no está siendo importada correctamente.

    Para solucionar este problema, asegúrese de que el paquete jest-mock-extended está instalado ejecutando npm install jest-mock-extended. Luego, importe la función mockDeep utilizando la siguiente sintaxis:

    import { mockDeep } from 'jest-mock-extended/lib/mockDeep';
    

    Con este cambio, el archivo singleton.ts debería verse así:

    import prisma from "../prismaClient";
    import { mockReset } from "jest-mock-extended";
    import { PrismaClient } from "@prisma/client";
    import { DeepMockProxy } from "jest-mock-extended/lib/cjs/Mock";
    import { mockDeep } from 'jest-mock-extended/lib/mockDeep';
    
    jest.mock("../prismaClient", () => ({
      __esModule: true,
    
      default: mockDeep<prismaclient>(),
    }));
    
    beforeEach(() => {
      mockReset(prismaMock);
    });
    
    export const prismaMock = prisma as unknown as DeepMockProxy<prismaclient>;
    

    Esto debería solucionar el error y permitir que las pruebas unitarias se ejecuten correctamente.

Comments are closed.