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.

Burlarse de un módulo con patrón de módulo y tener una funcionalidad única en cada prueba.

Tengo problemas para tener una implementación única de búsqueda a partir de esta configuración de patrón de módulo que tengo (MyConnection.js) – aquí hay algo similar a lo que tengo:

// MyConnection.js

const MyConnection = () => {
const search = async (q) => {
//… alguna funcionalidad
};
return {
search,
};
};

//JEST TESTS

const MyConnection = require(‘../MyConnection’)

// Esto funciona, pero establece la implementación de búsqueda para todo el archivo de prueba, creo que

jest.mock(‘../MyConnection’, () => {
return jest.fn(() => {
search: () => [‘mocked’, ‘fn’, ‘resultados’]
})
})

//Los tests de jest – quiero diferentes implementaciones de búsqueda en cada prueba

describe(‘pruebas de conexión’, () => {

it('prueba uno', () => {

    // No estoy seguro si es algo como esto para establecer 'search' para cada prueba? Esto no funciona tal como está

    MyConnection.search.mockImplementation((q)=>{`Buscaste ${q}`})
})

it('prueba dos', () => {
    MyConnection.search.mockImplementation((q)=>{q.length>32? 'a': 'b' })
})

})

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Una forma de lograr implementaciones de burla únicas de Jest de la función de búsqueda para cada prueba es mover la implementación de burla a cada prueba por separado en lugar de establecerla globalmente para todo el archivo de prueba.

    Aquí hay una versión actualizada de las pruebas de Jest:

    describe('pruebas de conexión', () => {
      it('prueba uno', () => {
        const MyConnection = require('../MyConnection');
        const myConnectionInstance = MyConnection();
    
        myConnectionInstance.search = jest.fn((q) => {
          return `Buscaste ${q}`;
        });
    
        // ...código de prueba que utiliza myConnectionInstance.search
      });
    
      it('prueba dos', () => {
        const MyConnection = require('../MyConnection');
        const myConnectionInstance = MyConnection();
    
        myConnectionInstance.search = jest.fn((q) => {
          return q.length > 32 ? 'a' : 'b';
        });
    
        // ...código de prueba que utiliza myConnectionInstance.search
      });
    });
    

    En cada prueba, primero requerimos el módulo MyConnection y creamos una instancia de él: const myConnectionInstance = MyConnection();. Luego, establecemos la función de búsqueda en una nueva implementación de burla de Jest, específica para esta prueba, utilizando myConnectionInstance.search = jest.fn((q) => { ... });. Finalmente, podemos usar myConnectionInstance.search como de costumbre en nuestro código de prueba.

    Este enfoque asegura que cada prueba tenga su propia implementación única de burla de la función de búsqueda.

Comments are closed.