【发布时间】:2018-10-19 03:33:58
【问题描述】:
我正在尝试测试一个 React Native 组件,它基本上是 Switch 的包装器。
看起来像这样(样式和额外代码已删除):
render() {
return (
<View>
<View>
<View>
<Switch
onValueChange={() => this.onChange(!this.state.value)}
value={this.state.value}
/>
</View>
</View>
</View>
);
}
这个组件没有onChange 方法本身,但是它扩展的类有。我想确保当我点击此 Switch 时,onChange 会以正确的值被调用(即true 或false)。
我的测试看起来像这样(我添加了一个模拟的onChange 方法,以便更容易测试新闻的动作):
it('calls onChange with proper values when pressed', () => {
const onChangeHandler = jest.fn();
const wrapper = shallow(
<Toggle />
);
wrapper.instance().onChange = onChangeHandler;
wrapper.simulate('press');
expect(wrapper.instance().onChange).toBeCalledWith(true);
});
但是,此测试失败,并且未调用 onChange。我不确定我的测试中的错误在哪里。
【问题讨论】:
-
这个问题在大约 3 年前被问及并得到了回答。但要回答你,不,不完全是。这个问题没有公认的答案,它没有提到
valueChange,而且这个问题专门针对 Switch 组件。
标签: react-native jestjs enzyme