Как обеспечить, чтобы jest mocks всегда сбрасывался?

#typescript #jestjs #wallaby.js

#typescript #jestjs #wallaby.js

Вопрос:

У меня есть пара тестов, которые работают неправильно. Иногда они проходят, иногда нет. Как мне издеваться над модулем, но гарантировать, что количество вызовов сбрасывается между тестами? Что я делаю не так?

 jest.mock('dockerode')  

import Docker from 'dockerode';

import {serviceExists, getDocker} from './methods'

import { mockContainerList } from './mockData'

describe('docker methods', function() {

    beforeEach(() => {
        jest.restoreAllMocks();
      })

    it('should validate that the servicename is currently running on the host', async function() {
        await Docker.mock.instances[0].listContainers.mockResolvedValueOnce(mockContainerList)
        let serviceName = 'buildtest';
        let funcCall = await serviceExists(serviceName); //?
        expect(Docker.mock.instances[0].listContainers.mock.calls.length).toEqual(1);

        expect(funcCall).toBeTruthy()
    });

    it('should return false if the servicename is NOT currently running on the host', async function() {

        await Docker.mock.instances[0].listContainers.mockResolvedValueOnce(mockContainerList);
        let serviceName = 'helloWorld';  
        let funcCall = await serviceExists(serviceName); //?  
        Docker.mock.instances[0].listContainers.mock.calls;  //? 
        expect(Docker.mock.instances[0].listContainers.mock.calls.length).toEqual(1);    // <-- this fails (but only sometimes)

        expect(funcCall).toBeFalsy();
    });

});
 

Комментарии:

1. Вы восстанавливаете , что не совсем то же самое, что сброс jestjs.io/docs/en/jest-object#jestresetallmocks

2. Там должны быть четкие границы.