reactjs - 使用测试库测试弹出组件以进行反应
问题描述
我正在使用我有一个按钮,将鼠标悬停在该按钮上时,会显示一个Popover
菜单。我正在尝试测试菜单的某些组件是否存在Popover
,但似乎Popover
菜单没有正确呈现:
// Displays market menu popover
const marketMenu: JSX.Element = (
<Menu>
<Tabs>
<Tab id={APPLE} title="Apple" />
<Tab id={ORANGE} title="Orange" />
<Tab id={BANANA} title="Banana" />
</Tabs>
</Menu>
);
return (
<Popover
className="market-selector-popover"
popoverClassName="market-selector-popover"
content={marketMenu}
>
<AnchorButton
className="market-selector-btn"
rightIcon="chevron-down"
text="Fruits"
/>
</Popover>
);
it("Selects Spot tab and displays it", () => {
const { container, getByRole } = renderWithProviders(
<MarketSelector />
);
fireEvent.mouseEnter(getByRole("button"));
const { getByText } = within(
container.querySelector(".market-selector-popover")
);
expect(getByText("Banana")).toBeInTheDocument();
});
解决方案
回复晚了,但我刚刚遇到了类似的问题,我使用findByText
.
因此,在您的情况下,我会将代码更改为:
it("Selects Spot tab and displays it", async () => {
const { container, getByText } = renderWithProviders(
<MarketSelector />
);
// Using the text to select like a user would
fireEvent.mouseEnter(getByText("Fruits"));
expect(await findByText("Banana")).toBeInTheDocument();
});
使用userEvent
来自 @testing-library/user-event 和screen
it("Selects Spot tab and displays it", async () => {
renderWithProviders(<MarketSelector />);
userEvent.hover(screen.getByText("Fruits"));
expect(await screen.findByText("Banana")).toBeInTheDocument();
});
推荐阅读
- python - 如何从扫描的 pdf 图像中提取分块内容?
- python - Python 中烛台/OHLC 数据的模板匹配
- c# - 为什么在这种情况下会出现“类型是在未引用的程序集中定义的”?
- python - 与 cupy 的自相关
- javascript - Javascript正则表达式解析复杂的url字符串
- python - 提交时手动呈现 Django formset 重定向问题
- postgresql - Postgresql pg_profile 在创建快照时出错
- javascript - 轮播 css3 动画表现怪异
- python - 使用 TF 2.0 将 saved_model 转换为 TFLite 模型
- c++ - 使用 IMFSourceReader 进行音频流式传输(Microsoft Media Foundation)