【发布时间】:2022-02-11 16:23:38
【问题描述】:
我要测试的是单击按钮并发生了一些操作,但我未通过测试并在单击时收到 0 个呼叫。我没有从道具传递 onclick 功能。 我正在使用 materialUi 按钮
const LoginFunction = () => {
const handleClick = () => {
console.log('some action here')
};
return (
<Button
data-test="btn"
className='btn'
onClick={() => {
handleClick();
}}
>
Some text
</Button>
)};
我是这样写测试的
describe('Test Login component', () => {
it('should trigger click event', () => {
const mockCallBack = jest.fn();
const wrapper = shallow(<LoginFunction />);
wrapper.simulate('click');
expect(mockCallBack.mock.calls.length).toBe(1);
});
});
也试过这种方法
describe('Test Login component', () => {
it('should trigger click event', () => {
const mockCallBack = jest.fn();
const wrapper = shallow(<LoginFunction />);
wrapper.find('.btn').simulate('click');
expect(mockCallBack.mock.calls.length).toBe(1);
});
});
【问题讨论】:
-
mockCallBack不会被调用。这就是断言失败的原因。您可能希望将回调作为道具传递给LoginFunction组件并调用它 -
BUt 我不是从道具调用handleClick函数,如果我这样写 - const wrapper = shallow(
);那是行不通的。当我不需要作为道具传递时,我正在寻找解决方案
标签: javascript reactjs testing jestjs enzyme