我有一个使用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
。
这是单元测试文件...
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()
的{{1}}已经被调用,请传递给它什么参数?