Как издеваться над пользовательским хуком возвращаемого значения? - PullRequest
0 голосов
/ 17 февраля 2020

Вот мой пользовательский хук:

  export function useClientRect() {
    const [scrollH, setScrollH] = useState(0);
    const [clientH, setClientH] = useState(0);
    const ref = useCallback(node => {
      if (node !== null) {
        setScrollH(node.scrollHeight);
        setClientH(node.clientHeight);
      }
    }, []);
    return [scrollH, clientH, ref];
  }
}

Я хочу, чтобы каждый раз, когда он вызывался, он возвращал мои значения. как:

jest.mock('useClientRect', () => [300, 200, () => {}]);

Как мне этого добиться?

1 Ответ

0 голосов
/ 18 февраля 2020

Загрузить крючок как модуль. Затем смоделируйте модуль:

jest.mock('module_name', () => ({
    useClientRect: () => [300, 200, jest.fn()]
}));

mock должен быть вызван поверх файла вне test fn. Поэтому в качестве проверяемого значения у нас будет только один массив.

Если вы хотите смоделировать ловушку с разными значениями в разных тестах:

import * as hooks from 'module_name';

it('a test', () => {
    jest.spyOn(hooks, 'useClientRect').mockImplementation(() => ([100, 200, jest.fn()]));
    //rest of the test
});

...