#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. Там должны быть четкие границы.