gpt4 book ai didi

javascript - 模拟子组件元素在父组件测试文件中的单击

转载 作者:行者123 更新时间:2023-11-28 03:24:28 26 4
gpt4 key购买 nike

我找不到一种方法来模拟父测试文件中子组件中存在的元素的点击。

let card;

const displayCardSection = (cardName) => {
card = cardName;
};

describe('Parent component', () => {
it('simulate click event on child link', () => {
const component = mount(<Parent
/>);
const res = component.find(<Child
onLinkClick={displayCardSection(CM_CARD)}
/>);
expect(res).toBeDefined();
res.exists('#cm_link').simulate('click');
expect(card).toBe(CM_CARD);
})
})

这是父组件的测试文件。

Parent.jsx:

class Parent extends Component {

handleClick = () => {
console.log('link clicked!');
};

render() {

const linkText = 'Link'
return (
<Child
linkText={linkText}
onLinkClick={handleClick}
/>
);
}
}

Child.jsx:

function Child({linkText, onLinkClick}) {
return (
<Link id="cm_link" onClick={onLinkClick}>{linkText}</Link>
);
}

这些是我拥有的组件。

我希望模拟子组件从父组件的链接单击,输出应该是显示的卡为“CM_CARD”。我可以编写断言语句,但我不会模拟子元素中存在的元素的单击事件,但事件在父元素本身中处理。

最佳答案

首先,我建议使用shallow,代码如下:

const component = shallow(<Parent />);

// The following code should trigger the handler and then you will see the console output
component.find("Child").prop("onLinkClick")();

我希望这有用并能解决您的问题,祝您有美好的一天!

关于javascript - 模拟子组件元素在父组件测试文件中的单击,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/58775186/

26 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com