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.

Referencia circular de TypeScript al probar Prisma con jest-mock-extended.

Comencé a escribir pruebas que giran en torno al uso de prisma(v3.6.0) en mi aplicación.

Para hacerlo, seguí la página oficial de prisma Unit testing with prisma y estoy utilizando jest-mock-extended.

Mi problema es que tengo un error de tiposcript al usar las funciones de prisma simuladas:

describe('Rutas de usuario', () => {
    it('debe responder éxito con una matriz de usuarios', async () => {
        prismaMock.user.findMany.mockResolvedValue([]); // <- aquí está el error
    }
}
Type of property 'AND' circularly references itself in mapped type

Hay algunas discusiones sobre este problema en github Testing with prisma. Obtuve 3 opciones de esta discusión:

  • Agregar "skipLibCheck": true en tsconfig.json. Esto rompe algunas cosas en mi código y no resuelve mi problema.
  • Agregar "strictNullChecks": true, tampoco tiene efecto.
  • //@ts-ignore la línea. Esto efectivamente elimina el error y la prueba se ejecuta sin problemas.

Si bien puedo realizar mis pruebas, me gustaría evitar tener que ignorar este error en todas mis pruebas, ya que ignorar los errores solo es una buena idea hasta que deja de serlo.

¿Alguien tiene más información o recomendaciones sobre este problema?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Como experto en IT especializado en Typescript, testing, Prisma y jest-mock-extended, entiendo su preocupación acerca del error de referencia circular que encontró al escribir pruebas relacionadas con el uso de Prisma en su aplicación.

    Basado en la discusión en el hilo de Github “Testing with Prisma” y en sus experiencias, aquí están mis recomendaciones:

    • Si es posible, intente actualizar su versión de Prisma a la más reciente, lo cual podría haber resuelto este problema.
    • Refactorice su código para eliminar cualquier referencia circular entre la función simulada y el tipo mapeado. Por ejemplo, podría utilizar otro tipo para describir la firma de la función simulada en lugar de la generada por Prisma.
    • Utilice type-coverage u otras herramientas similares para tener visibilidad sobre la cobertura de tipos de su código, lo cual podría ayudar a identificar otros problemas potenciales.
    • Agregue @ts-ignore únicamente como último recurso y tenga en cuenta los riesgos de ocultar posibles errores.

    Espero que estas recomendaciones le ayuden a solucionar el problema de referencia circular y a escribir pruebas que brinden retroalimentación confiable sobre su código.

Comments are closed.