Und*_*ain 8 unit-testing reactjs jestjs react-testing-library jest-dom
我正在测试我的应用程序并遇到问题。当尝试测试Dropdown组件中的行是否对悬停施加效果时,我注意到我无法检查元素的背景颜色,我觉得这很奇怪。
尝试使用 jest-dom matcher "toHaveStyle()",下面是一个示例,我一生都无法让它工作。
下拉菜单.test.tsx
test('Should contain clickable elements that change style when hovered', () => {
const dropElement1 = screen.getByLabelText('testLabel1');
expect(dropElement1).toHaveStyle('background: white');
});
Run Code Online (Sandbox Code Playgroud)
错误
我还尝试过使用background-color、使用十六进制值(另一个有趣的错误是 PrettyDom 将十六进制转换为 RGB),或者添加到toHaveStyle().
我确信该元素确实是白色的,但我不明白出了什么问题。如果我的方法是不好的做法,并且您对如何检查这一点有更好的了解,或者您对我的问题有解决方案,请告诉我!
您的测试用例找不到样式dropElement1,因为它是一个下拉菜单,并且由于您刚刚渲染Dropdown组件而尚未打开。
您需要模拟鼠标悬停或单击菜单上的操作DropDown,然后期望为其提供样式属性。
import React from "react";
import { render, screen, fireEvent, waitFor } from "@testing-library/react";
import { Dropdown } from "./Dropdown";
test('Should contain clickable elements that change style when hovered', async () => {
render(<Dropdown />);
fireEvent.mouseEnter(screen.getByText('drop-down-btn'));
await waitFor(() => screen.getByTestId('dropdown-menu'))
expect(screen.getByLabelText('testLabel1')).toHaveStyle('background: white');
});
Run Code Online (Sandbox Code Playgroud)
注意:由于您尚未发布该Dropdown组件,因此我放置了一些示例名称来获取切换开关和下拉菜单。另外,您可以在react-testing-library上阅读有关鼠标事件的信息。您也可以使用mouseOver,但这取决于您的下拉菜单实现。
| 归档时间: |
|
| 查看次数: |
16470 次 |
| 最近记录: |