gpt4 book ai didi

reactjs - MouseEnter/MouseOver 不适用于 react-testing-library。如何使用 react-testing-library 测试悬停事件

转载 作者:行者123 更新时间:2023-12-04 11:51:46 25 4
gpt4 key购买 nike

我有一个 ant-design 下拉列表,它显示了悬停元素的列表。我想测试下拉菜单中的列表。我正在使用 fireEvent.mouseOver() 但它不起作用。 screen.debug() 没有显示菜单。如何测试悬停元素?
提前致谢

最佳答案

这是我的测试代码。
使用 await 并等待菜单出现很重要。
MyDropdown.tsx

import React from 'react'
import { Menu, Dropdown, Button } from 'antd';

const menu = (
<Menu data-testid="dropdown-menu">
<Menu.Item>
<a target="_blank" rel="noopener noreferrer" href="http://www.alipay.com/">
1st menu item
</a>
</Menu.Item>
<Menu.Item>
<a target="_blank" rel="noopener noreferrer" href="http://www.taobao.com/">
2nd menu item
</a>
</Menu.Item>
<Menu.Item>
<a target="_blank" rel="noopener noreferrer" href="http://www.tmall.com/">
3rd menu item
</a>
</Menu.Item>
</Menu>
);

export const MyDropdown: React.FC = () => {
return(
<Dropdown overlay={menu} placement="bottomLeft" arrow>
<Button>bottomLeft</Button>
</Dropdown>
)
}
MyDropdown.test.tsx
import React from "react";
import { render, screen, fireEvent, waitFor } from "@testing-library/react";
import { MyDropdown } from "./MyDropdown";

describe("<MyDropdown />", () => {
it("check dropdown menu item", async () => {
render(<MyDropdown />);

fireEvent.mouseOver(screen.getByText('bottomLeft'));

await waitFor(() => screen.getByTestId('dropdown-menu'))
expect(screen.getByText('1st menu item')).toBeInTheDocument()
expect(screen.getByText('2nd menu item')).toBeInTheDocument()
expect(screen.getByText('3rd menu item')).toBeInTheDocument()
});
});

关于reactjs - MouseEnter/MouseOver 不适用于 react-testing-library。如何使用 react-testing-library 测试悬停事件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64786789/

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