我正在学习开玩笑,并且正在尝试测试点击事件。我要测试的功能在组件内部是私有的。
我尝试使用spyOn()方法。
这是调用函数的组件
id
这是功能
<NavbarToggler onClick={this.toggleNavbar} />
这是测试
private toggleNavbar = (): void => {
this.setState({
isOpen: !this.state.isOpen
});
}
我目前在jest.spyOn上收到一条错误消息,说不能将toggleNavbar分配给参数
答案 0 :(得分:1)
通常,您不需要这样做,因为您将测试组件的实现细节-这会使测试变得脆弱。如果您的私有方法设置了一个状态,则该状态很可能会更改组件渲染的输出。您应该断言,触发它后(例如通过单击),渲染函数的输出包含该更改。
假设您正在使用enzyme
// expect(wrapper.find(Navbar)).not.toExist(); // enzyme-matchers provides `toExists()`
wrapper.find(NavbarToggler).simulate('click');
expect(wrapper.find(Navbar)).toExist(); // enzyme-matchers provides `toExists()`
要回答您的问题-如果您使用的是enzyme
,则可以检查组件的状态。另一个超级肮脏的解决方案是instance.toggleNavbar = jest.fn()
,尽管如前所述,您永远不需要这样做。