reactjs - 如何使用 Enzymes 浅层和样式组件 ThemeProvider 测试样式组件?

标签 reactjs enzyme styled-components

有没有办法使用 enzyme 浅方法和样式组件的 ThemeProvider 包装来测试样式组件的文本内容?

class MyComponent extends React.component {
    ...
    render(){
        return (
            <StyledComponent_A>
               <StyledComponent_B>
                   some text
               </StyledComponent_B>
            </StyledComponent_A>
        );
    }
}

test('text is \'some text\'', () => {
    const wrapper = shallow(
    <ThemeProvider theme={theme}>        
        <MyComponent />
    </ThemeProvider
    );
    const text = wrapper.dive().find(StyledComponent_B).text();
    expect(text).toBe('some text');
});

最佳答案

使用浅层你的text()输出是这样的<styled.section />

因此您需要使用children()来获取样式元素的内容。 像这样的事情:

const text = wrapper.find(StyledComponent_B).children().text();
expect(text).toBe('some text');

关于reactjs - 如何使用 Enzymes 浅层和样式组件 ThemeProvider 测试样式组件?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46853221/

相关文章:

javascript - react : Why isn't my context value updated?

javascript - React - 在表格中呈现数据

reactjs - Jest 在尝试导入组件时抛出错误 Unexpected token function

reactjs - 方法 “simulate” 旨在在 1 个节点上运行。 0 找到了。 - Jest/ enzyme

css - ReactJS 样式组件的上下文样式

html - 相对于其兄弟元素绝对定位一个元素

javascript - 在 useEffect 钩子(Hook)的 if 条件下调用异步函数

reactjs - 如何使用 Enzyme 测试 react-router 链接?

javascript - 使用 styled props 将动态 css 属性应用到 div

webpack - 如何在样式组件配置中禁用 vendor 前缀?