reactjs - 如何使用 React-testing-library 测试 styled-components 属性?
问题描述
我试图为我的 react-components 编写一个单元测试,所以第一步是测试 styled-components 属性的初始值,如下所示,所以功能是当用户单击按钮时,slideIndex 状态会改变,然后它会触发我的幻灯片更改为另一张幻灯片,所以我想测试 slideIndex 的初始值,并且在我触发按钮后,索引会更改以查看它是否正常工作。
<Wrapper data-testid="wrapper" index={slideIndex}>
{sliderItems.map((item) => {
return (
<Slide bg={item.bg} key={item.id}>
<ImgContainer>
<Image src={item.img} />
</ImgContainer>
<InfoContainer>
<Title>{item.title}</Title>
<Desc>{item.desc}</Desc>
<Button>SHOW NOW</Button>
</InfoContainer>
</Slide>
);
})}
</Wrapper>;
但是现在我坚持测试索引是否存在,这是我的测试代码
test('Check render wrapper inital index value to be 0', () => {
const { getByTestId } = render(<Slider/>);
const wrapperCom = getByTestId("wrapper")
expect(wrapperCom).toHaveAttribute("index",0)
});
这将返回
Expected the element to have attribute:
index
Received:
null
所以我假设出了点问题,或者这不是测试这个属性的正确方法?
编辑,我使用了如下索引道具
interface WrapperProp{
index:number;
}
const Wrapper = styled.div<WrapperProp>`
height:100%;
display: flex;
/* transform: translateX(100vw); */
transition: all 1.5s ease;
transform: translateX(${(p)=>p.index * -100}vw);
解决方案
所以我找到了一份文档,其中详细介绍了如何使用“tohave...”功能https://github.com/testing-library/jest-dom#tohaveattribute,
结果是 juliomalves 提到我以错误的方式使用 toHaveAttribute ,我通过以下代码修复了它,希望这会有所帮助。
test('Check render wrapper inital translate style value', () => {
const { getByTestId } = render(<Slider/>);
const wrapperCom = getByTestId("wrapper")
expect(wrapperCom).toHaveStyle("transform: translateX(100vw)")
});
推荐阅读
- makefile - 在 AC_OUTPUT() 的参数中使用 PACKAGE_VERSION
- algorithm - 如何找到列表中平均值最高的 x 个连续数字?
- video - 是否可以在视频中包含在线图像?
- python - 如何制作与现有固定方面子图相同宽度的附加子图?
- python - 如何在 Python 中使用 \t 缩进我的代码
- python - 为什么我的程序只删除列表中的所有其他字符?
- python - 遍历嵌套列表并计算元素的平均值
- android - RecyclerView overscrollmode
- javascript - 如何在模态上制作确认删除弹出窗口
- php - 我如何显示来自 api 的 json 数组数据