Как утверждать, что функция была вызвана через другую функцию обратного вызова - PullRequest
0 голосов
/ 08 октября 2019

У меня есть проект, который использует React, с react-testing-library и jest-dom для модульных тестов. Я новичок в использовании этих библиотек тестирования, и мне нужна помощь.

Использование jest Я смоделировал статическую функцию следующим образом ...

vanUnderscore.js

export default class VanUnderscore {
    static debounce = (func, wait, immediate) => {...

Вышеуказанная функция может бытьназывается так ...

VanUnderscore.debounce(() => legalCoverFilterClick(mustInclude), clickDelay)();

Я хочу провести модульное тестирование, чтобы была вызвана функция VanUnderscore.debounce(), но также чтобы legalCoverFilterClick() вызывался с параметром true.

* 1021. * Вот файл модульного теста ...

test.js

import VanUnderscore from '../../helpers/utility/vanUnderscore';

jest.mock('../../helpers/utility/vanUnderscore');

Позже в test.js, здесь находится модульный тест, который использует макетстатическая функция.

it('should include policies with "Legal Cover" when selected to filter', () => {
    const mockStaticDebounce = jest.fn((callback, delay) => {
      console.log('mockStaticDebounce called');

      console.log(callback);
      callback();

      return () => {};
    });

    VanUnderscore.debounce = mockStaticDebounce.bind(VanUnderscore);

    const legalCoverFilterClick = jest.fn();

    const { container } = render(
      <BenefitsFilters
        isPolicyForSocialUse={true}
        onLegalCoverFilterClick={legalCoverFilterClick}
      />
    );

    const legalCoverFilterCheckbox = container.querySelector('#legal-cover-filter');
    legalCoverFilterCheckbox.checked = true;

    fireEvent.click(legalCoverFilterCheckbox);

    expect(mockStaticDebounce).toHaveBeenCalledWith(expect.any(Function), 1000);
    //expect(legalCoverFilterClick).toHaveBeenCalledWith(true);

    mockStaticDebounce.mockClear();
});

Строка ...

expect(mockStaticDebounce).toHaveBeenCalledWith(expect.any(Function), 1000);

проходит. Однако следующее не проходит ...

expect(legalCoverFilterClick).toHaveBeenCalledWith(true);

Вместо этого я вижу Expected: true Number of calls: 0

В выводе консоли я вижу, что console.log('mockStaticDebounce called'); былоВыполнено.

Может ли кто-нибудь показать мне, если можно утверждать, что legalCoverFilterClick(), который передается в VanUnderscore.debounce(), был вызван и какие параметры были переданы ему, пожалуйста?

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