reactjs - 当类名不是静态时,如何选择用于 enzyme 测试的节点?

标签 reactjs enzyme

我想使用 Enzyme 测试以下组件:

export class Header extends React.Component {
    render() {
        const { classes, numOrders } = this.props;

        return (
            <header>
                <div className={classes.numOrders}>
                    {numOrders}
                </div>
                ...
            </header>
        );
    }
}

选择显示订单数量的 div 的最佳方法是什么。请注意,类名是动态生成的(使用 JSS),因此这不是一个好的选择。这样做还有其他合理的方法/最佳做法吗? (我不想在这些节点上添加 CSS #id。)

最佳答案

我在这里喜欢做的是使用 data 属性进行测试,然后在 Enzyme 中使用属性选择器。

它看起来像这样:

export class Header extends React.Component {
    render() {
        const { classes, numOrders } = this.props;

        return (
            <header>
                <div className={classes.numOrders} data-testid="SomeName">
                    {numOrders}
                </div>
                ...
            </header>
        );
    }
}

Enzyme 中的选择器是这样的:

wrapper.find('[data-testid="SomeName"]');

更多信息:https://reactjs.org/blog/2017/09/08/dom-attributes-in-react-16.html

关于reactjs - 当类名不是静态时,如何选择用于 enzyme 测试的节点?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50429874/

相关文章:

javascript - 如何从购物车中删除产品?

javascript - Material-UI 表格标签中的 Formik

reactjs - 无法在 Enzyme 测试中更新 Office Fabric UI TextField 的值

reactjs - enzyme 和钩子(Hook)中的警告 : An update to App inside a test was not wrapped in act(. ..)

reactjs - 故事书:ReferenceError: Jest 未定义

javascript - react 虚拟网格排序图标

ios - `React/RCTBridgeModule.h` 找不到文件

reactjs - React 自动渲染 Math Latex

javascript - 使用 jest/enzyme 模拟模块功能

javascript - Enzyme 的 shallow().text() 和 React Native 没有像我预期的那样工作