Как сделать, чтобы Jest-макет функции toHaveBeenCalledTimes имел новый счетчик для каждого набора тестов? - PullRequest
0 голосов
/ 08 октября 2018

Когда я утверждаю, сколько раз вызываемая функция вызывалась, импортированная проверенная функция всегда возвращает объединенное количество вызовов.

Например, в первом наборе тестов есть функция, называемая фиктивной функцией import { get } from 'axios', и ожидаемое значение toHaveBeenCalledTimes равно 1.Однако во втором наборе тестов функция снова вызывается get и toHaveBeenCalledTimes равно 2 вместо 1.

Как заставить смоделированную функцию toHaveBeenCalledTimes возвращать счет обновления для каждого тестакостюм?

describe('fetchAData', () => {
    it('should return the right A data response', (done) => {
        const sampleResponse = { data: dataASample };

        get.mockImplementationOnce(() => {
            return Promise.resolve(sampleResponse);
        });

        fetchAData().then(() => {
            expect(get).toHaveBeenCalledTimes(1);

            done();
        });
    });
});

describe('fetchBData', () => {
    it('should return the right B data response', (done) => {
        const sampleResponse = { data: dataBSample };

        get.mockImplementationOnce(() => {
            return Promise.resolve(sampleResponse);
        });

        fetchBData().then(() => {
            expect(get).toHaveBeenCalledTimes(1); // -> Return `2`
            done();
        });
    });
});

1 Ответ

0 голосов
/ 08 октября 2018

mockFn.mockReset() только что сделал трюк, https://jestjs.io/docs/en/mock-function-api#mockfnmockreset

Делает все, что делает mockFn.mockClear (), а также удаляет все ложные возвращаемые значения или реализации.

beforeEach(() => {
    get.mockReset();
});
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...