就当我有了这个组件
function RankDialog(props: any) {
const { visible = true, setVisible } = props;
return (
<Dialog
visible={visible}
className="rank-dialog"
scrollBoxClassName="rank-scroll-box"
alignBottom
noMargin
noContentPadding
onClose={() => {
setVisible(false);
}}
onCancel={() => {
setVisible(false);
}}
>
<Rank />
</Dialog>
);
}
在我的单元测试中,它说我错过了这些行的覆盖范围
onClose={() => {
setVisible(false);
}}
onCancel={() => {
setVisible(false);
}}
如何编写单元测试只是为了检查 prop 是否正确通过。我搜索了谷歌,它说我必须触发关闭和取消的点击。有没有什么不同的方法,因为我可能不知道关闭和取消按钮是什么样子的,以便正确查询它。
我想写一个测试来检查Dialog.props.onClose
是否正确通过。
我使用@testing-library/react
2条答案
按热度按时间4ioopgfo1#
您可以使用
jest.fn()
为setVisible
创建一个mock函数,然后在调用onClose
和onCancel
时检查它是否已使用预期值调用。这样,您就无需担心Dialog
组件的实现细节或查询关闭和取消按钮。f0ofjuux2#
您可以将一个Jest模拟函数作为
setVisible
prop传递给RankDialog组件,允许您捕获对该函数的调用并对其进行Assert。这两个测试用例检查在单击“close”和“cancel”按钮时setVisible函数是否被调用,参数为false。使用
@testing-library/user-event
模拟用户事件是here提到的测试库生态系统中推荐的方法,因为据说它可以紧密模拟真实的用户交互,并确保测试更接近实际的用户行为。在第一个测试用例中,使用
screen.getByRole("button", { name: /close/i })
查询“close”按钮,并使用userEvent.click(closeBtn)
模拟单击。然后,使用expectAssertsetVisible
函数是以false
作为参数调用的。在第二个测试用例中,您通过查询“cancel”按钮来执行类似的操作。
这种方法允许您测试RankDialog组件的预期行为,而不依赖于按钮外观的特定实现细节,这使得测试对UI中的更改更具弹性。