Javascript 如何使用Jest和/或Ezyme测试React组件呈现的样式和媒体查询
我正在使用Javascript 如何使用Jest和/或Ezyme测试React组件呈现的样式和媒体查询,javascript,reactjs,jestjs,enzyme,styled-components,Javascript,Reactjs,Jestjs,Enzyme,Styled Components,我正在使用样式化组件开发一个公司内部使用的框架。我们需要创建新的响应组件,当我在浏览器中测试时,我可以看到渲染组件在调整窗口大小时如何更改其背景色。我试图通过编程实现同样的功能,并用Jest和/或Ezyme测试功能,但到目前为止我还没有成功。有人知道吗 这是组件的代码: const Component = styled.div` height: 200px; width: 200px; background-color: purple; @media (max
样式化组件
开发一个公司内部使用的框架。我们需要创建新的响应组件,当我在浏览器中测试时,我可以看到渲染组件在调整窗口大小时如何更改其背景色。我试图通过编程实现同样的功能,并用Jest和/或Ezyme测试功能,但到目前为止我还没有成功。有人知道吗
这是组件的代码:
const Component = styled.div`
height: 200px;
width: 200px;
background-color: purple;
@media (max-width: ${DESKTOP}px) {
background-color: purple;
}
@media (max-width: ${TABLET}px) {
background-color: yellow;
}
@media (max-width: ${MOBILE}px) {
background-color: red;
}
`
我使用jest-styled-components
包中的toHaveStyleRule
编写了以下测试。测试通过是因为它们有效地验证了移动媒体查询的“背景色”为“红色”,等等
expect(<Component />).toHaveStyleRule(
{ 'background-color': 'red' },
{ media: `(max-width: ${MOBILE}px)` }
)
expect(<Component />).toHaveStyleRule(
{ 'background-color': 'yellow' },
{ media: `(max-width: ${TABLET}px)` }
)
expect(<Component />).toHaveStyleRule(
{ 'background-color': 'blue' },
{ media: `(max-width: ${DESKTOP}px)` }
)
expect().toHaveStyleRule(
{“背景色”:“红色”},
{media:`(最大宽度:${MOBILE}px)`}
)
expect().toHaveStyleRule(
{“背景色”:“黄色”},
{media:`(最大宽度:${TABLET}px)`}
)
expect().toHaveStyleRule(
{“背景色”:“蓝色”},
{media:`(最大宽度:${DESKTOP}px)`}
)
但是,如果我通过window.resizeTo(250250)
调整窗口大小,测试就会失败,因为我希望组件看起来是红色的,而“背景色”看起来总是“紫色”
为了调整窗口的大小,我使用JSDOM并一直在尝试以下代码段:
有线索吗?提前谢谢 我能够在本地重新创建,但我意识到前2个
expect
s通过了,而最后一个没有通过。这是因为DESKTOP
媒体查询块正在将背景色设置为“紫色”,而expect
正在查找“蓝色”
expect().toHaveStyleRule(
{“背景色”:“蓝色”},
{media:`(最大宽度:${DESKTOP}px)`}
)
如果这不是你真正看到的问题,请告诉我
background-color: purple;
@media (max-width: ${DESKTOP}px) {
background-color: purple;
}
expect(<Component />).toHaveStyleRule(
{ 'background-color': 'blue' },
{ media: `(max-width: ${DESKTOP}px)` }
)