Пользовательский тест дроссельной заслонки - PullRequest
0 голосов
/ 17 мая 2019

У меня есть следующий тест:

import { throttle } from "./event";

jest.useFakeTimers();

it('mock setTimeout test', () => {
    const mockedFunction = jest.fn();
    throttle(mockedFunction, 1);
    expect(setTimeout).toHaveBeenLastCalledWith(mockedFunction, 1000);
    expect(setTimeout).toHaveBeenCalledTimes(1);
});

где дроссельная заслонка:

export const throttle = (func, wait) => {
    let timer = null;
    return function(...args) {
        if (timer === null) {
            timer = setTimeout(() => {
                func.apply(this, args);
                timer = null;
            }, wait); 
        }
    };
};

но тест не пройден:

enter image description here

1 Ответ

0 голосов
/ 17 мая 2019

Ошибка в том, что Throttle создаст для вас новую функцию, которая «добавляет» функцию «ждать до» ... вы никогда не вызывали ее

  throttle(mockedFunction, 1)();
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...