使用 Jest-Enzyme 测试样式组件

Posted

技术标签:

【中文标题】使用 Jest-Enzyme 测试样式组件【英文标题】:Test styled component with Jest-Enzyme 【发布时间】:2019-05-30 21:56:23 【问题描述】:

如何测试我的styled-component 是否具有特定的 CSS 属性值对?

假设我的组件如下:

const myColor = '#111';

const Button = styled.button`
  background-color: $myColor;
`;

并且测试检查'background-color' 属性的值是否为'#111'

测试运行器是 Jest,我使用测试实用程序库 Enzyme

【问题讨论】:

【参考方案1】:

jest-styled-components 的toHaveStyleRule 函数解决了我的问题!

import 'jest-styled-components'

describe('<Button> component', () => 
  it('should have myColor', () => 
    const wrapper = mount(<Button />);
    expect(wrapper.find('Button')).toHaveStyleRule('background-color', myColor)
  );
);

【讨论】:

如果需要测试具有特异性 hack 的组件怎么办,比如 const Button = styled.button' &amp;&amp; background-color: $myColor; '; toHaveStyleRule 在这种情况下对我不起作用 找到解决方案:将modifier: '&amp;&amp;', 添加到toHaveStyleRule 方法对我有用,就像这样:.toHaveStyleRule('background-color', myColor, modifier: '&amp;&amp;' );

以上是关于使用 Jest-Enzyme 测试样式组件的主要内容,如果未能解决你的问题,请参考以下文章

如何在使用样式组件的 React 组件中测试字符串“...正在加载”?

使用酶和主题测试样式化组件

如何使用 Enzyme 测试 React 组件属性的样式

尝试使用主题测试样式化组件时出错

如何使用 Jest 和 Enzyme 测试样式组件以具有属性

使用 react-testing-library 测试样式化的组件