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.

¿Es posible usar Jest para probar un tipo en un módulo segmentado?

Me han asignado la tarea de agregar pruebas a un sdk escrito en TypeScript. Este sdk tiene un módulo de acceso público y un módulo interno, y los tipos de estos módulos se extienden en muchos archivos. Por ejemplo:

//CustomField.ts
modulo deadbreaker {
export class CustomField {}
}

//Music.ts
módulo deadbreaker {
export class Music{}
}

Cuando se compila el sdk, todas las clases exportadas se colocan en un archivo javascript y luego se exporta todo el módulo deadbreaker.

Usando Jest como nuestro marco de pruebas, hemos intentado sin éxito probar los tipos anidados dentro del módulo deadbreaker segmentado.

Archivo de prueba:

import deathbreaker from “../../src/CustomField”;

describe(“Clase CustomField”, () => {…})

Mensaje de error: ‘src/CustomField.ts’ no es un módulo. Entiendo por qué dice esto, ya que CustomField está dentro del módulo deadbreaker.

¿Hay alguna manera de probar los tipos encerrados con Jest?

Tags:  , , ,

Answer

  1. Avatar for davy.ai

    Sí, hay una manera de probar los tipos incluidos con Jest.

    Un enfoque sería crear un archivo de prueba separado que importa todo el módulo deadbreaker en lugar de intentar importar un módulo específico como CustomField. Esto se puede hacer utilizando la siguiente sintaxis:

    import * as deadbreaker from '../../src/deadbreaker';
    
    describe('Clase CustomField', () => {
       it('debe hacer algo', () => {
          // código de prueba aquí
       });
    });
    

    Esto permitirá que Jest acceda a todos los tipos dentro del módulo deadbreaker.

    Otro enfoque sería exportar los tipos individualmente desde sus respectivos archivos usando “export” en lugar de declararlos dentro del módulo deadbreaker. Por ejemplo:

    // CustomField.ts
    export class CustomField {}
    
    // Music.ts
    export class Music{}
    

    Luego, en el archivo de prueba, importe las clases directamente:

    import { CustomField } from '../../src/CustomField';
    import { Music } from '../../src/Music';
    
    describe('Clase CustomField', () => {
       it('debe hacer algo', () => {
          // código de prueba aquí
       });
    });
    

    Este enfoque permite una mayor granularidad al importar y probar tipos específicos, pero puede requerir una refactorización más extensa del código existente.

Comments are closed.