gpt4 book ai didi

reactjs - 模拟点击 React with Enzyme 不执行任何操作

转载 作者:行者123 更新时间:2023-12-03 14:07:40 28 4
gpt4 key购买 nike

我有一个 React 组件类,我正在尝试测试它的点击行为,但我无法让模拟实际运行。这是组件类:

class Navbar extends Component {
constructor(props) {
super(props);

this.toggle = this.toggle.bind(this);
this.state = {
isOpen: false
};
}

toggle() {
this.setState({
isOpen: !this.state.isOpen
});
}

render() {
return (
<NavbarWrapper expand={this.props.expand}>
<NavbarBrand>{logo}</NavbarBrand>
<NavbarToggler onClick={this.toggle} collapsed={!this.state.isOpen}>
<NavbarIconBar className="top-bar" />
<NavbarIconBar className="middle-bar" />
<NavbarIconBar className="bottom-bar" />
</NavbarToggler>
<NavbarCollapsibleContent isOpen={this.state.isOpen} navbar>
{this.props.children}
</NavbarCollapsibleContent>
</NavbarWrapper>
);
}
}

这是测试:

const wrapper = shallow(<Navbar {...props} />);
const toggler = wrapper.find(NavbarToggler);
const content = wrapper.find(NavbarCollapsibleContent);

// initial state
expect(content.props().isOpen).toBe(false);

// click to expand (i.e. NOT collapse)
toggler.simulate("click");
expect(content.props().isOpen).toBe(true);

// click to collapse
toggler.simulate("click");
expect(content.props().isOpen).toBe(false);

由于组件的 isOpen 属性的初始状态为 false,因此第一个 Expect 语句成功运行。但是,第二个测试失败,控制台输出:

  ● Navbar › should toggle 'NavbarCollapsibleContent's 'isOpen' state when clicking on 'NavbarToggler'

expect(received).toBe(expected) // Object.is equality

Expected: true
Received: false

这似乎暗示模拟不起作用。我在这里做错了什么?

最佳答案

该问题是由于引用在测试顶部创建的现有 const 内容 引起的,该内容在更新后变得过时。将测试套件更改为:

const wrapper = shallowTestComponent();
const toggler = wrapper.find(NavbarToggler);

// initial state
expect(wrapper.find(NavbarCollapsibleContent).props().isOpen).toBe(false);

// click to expand (i.e. NOT collapse)
toggler.simulate("click");
expect(wrapper.find(NavbarCollapsibleContent).props().isOpen).toBe(true);

// click to collapse
toggler.simulate("click");
expect(wrapper.find(NavbarCollapsibleContent).props().isOpen).toBe(false);

解决了我的问题。

关于reactjs - 模拟点击 React with Enzyme 不执行任何操作,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51085691/

28 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com