Hice las pruebas de la siguiente manera, pero me molesta cómo necesito importar un objeto con las funciones, en lugar de solo importar las funciones.
esto funciona
//service.test.js const get = require('../../modules/bankUser/model/getRegisteredUser'); get.getRegisteredUser = jest.fn() .mockImplementationOnce(async () => mock) .mockImplementationOnce(async () => mockUpdated);
//service.js const get = require('../model/getRegisteredUser'); const testedFunction () => { const depositReciver = await get.getRegisteredUser(depositName, depositCpf); }
esta dosis
//service.test.js const get = require('../../modules/bankUser/model/getRegisteredUser'); get.getRegisteredUser = jest.fn() .mockImplementationOnce(async () => mock) .mockImplementationOnce(async () => mockUpdated);
//service.js const { getRegisteredUser } = require('../model/getRegisteredUser'); const testedFunction () => { const depositReciver = await getRegisteredUser(depositName, depositCpf); }
Estoy intentando esto ( camino ):
//service.test.js const get = require('../../modules/bankUser/model/getRegisteredUser'); jest.mock('../../modules/bankUser/model/getRegisteredUser'); get.mockImplementationOnce(() => ({ getRegisteredUser: () => mockObject }));
broma devuelve esto:
TypeError: get.mockImplementationOnce is not a function
también he intentado importar así
//service.test.js const { getRegisteredUser } = require('../../modules/bankUser/model/getRegisteredUser'); jest.mock('../../modules/bankUser/model/getRegisteredUser'); getRegisteredUser.mockImplementationOnce(() => ({ getRegisteredUser: () => mockObject }));
EDITAR
//getRegisteredUser.js const { getConnection } = require('../../../global/connection'); const getRegisteredUser = async (userName, cpf) => { const db = await getConnection('Data-Base'); const res = await db.collection('Collection') .findOne({ userName, cpf }); return res; }; module.exports = { getRegisteredUser };
El ejemplo que está señalando [https://jestjs.io/docs/es6-class-mocks#replacing-the-mock-using-mockimplementation-or-mockimplementationonce][1] está relacionado con la exportación predeterminada, pero creo que usted es usando exportación con nombre en su código.
Hay varias formas de hacerlo
Un camino
const get = require('../../modules/bankUser/model/getRegisteredUser'); jest.mock('../../modules/bankUser/model/getRegisteredUser'); get.getRegisteredUser.mockImplementationOnce(() => mockObject);
Segunda Vía
jest.mock('../../modules/bankUser/model/getRegisteredUser', () => ({ ...jest.requireActual('../../modules/bankUser/model/getRegisteredUser'), getRegisteredUser: jest.fn().mockImplementation(() => mockObject), }))
una otra manera
We can also mock a module using the __mocks__ directory which is inbuilt feature of jest
Y al final, nunca se olvidó de llamar a clearAllMocks() después de cada prueba; de lo contrario, puede afectar el resultado de otras pruebas.
afterEach(() => { jest.clearAllMocks(); });