相关疑难解决方法(0)

React,Jest和Material-UI:如何测试以模式或弹出方式呈现的内容

有一些material-ui组件无法将其结果与父组件放置在同一位置。其中,我们有Dialog,Menu等等。

显然,这不可能在装有某些父组件的jest.js包装器中测试其内容是否存在。

例如,给定以下组件:

class DropdownMenu extends React.Component {
  onButtonClick = (e) => {
    this.setState({ open: true, anchorEl: e.currentTarget });
  }

  render() {
    return (
      <div>
        <Button onClick={this.onButtonClick}>Menu</Button>
        <Menu
          open={this.state.open}
          onRequestClose={() => this.setState({ open: false })}
        >
          <MenuItem label="Home" />
          <MenuItem label="Sign in" />
        </Menu>
      </div>
    );
  }
}
Run Code Online (Sandbox Code Playgroud)

即使此测试应直观地起作用,它也会失败:

it('renders some menu items', () => {
  const wrapper = mount(<AppMenu />);
  expect(wrapper).toContainReact(<MenuItem label="Home" />);
});
Run Code Online (Sandbox Code Playgroud)

这是杰斯特失败的输出:

renders some menu items

Expected <AppMenu> to contain <withStyles(MenuItem) className="MenuItem" …
Run Code Online (Sandbox Code Playgroud)

testing reactjs jestjs material-ui enzyme

7
推荐指数
2
解决办法
2251
查看次数

标签 统计

enzyme ×1

jestjs ×1

material-ui ×1

reactjs ×1

testing ×1