У меня есть проект, который использует 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()
, был вызван и какие параметры были переданы ему, пожалуйста?