【发布时间】:2022-01-21 10:39:32
【问题描述】:
测试新手,这是一个使用 redux 的连接组件。我正在测试是否调用了 maskPromoCode 函数。使用当前的测试代码,错误提示:无法对原始值进行监视;给定的未定义
不明白为什么。谢谢。
组件:
class Textbox extends React.Component {
constructor(props) {
super(props);
}
onChange(e) {
e.preventDefault();
this.setState({
value: this.maskPromoCode(e.target.value)
})
}
maskPromoCode(value) {...}
render() {
return (
<>
<input
...
onChange={e => this.onChange(e)}
/>
</>
);
}
}
const mapDispatchToProps = { setError, setPwError };
export default connect(null, mapDispatchToProps)(Textbox);
测试文件
it('invokes the maskPromoCode function with event value', () => {
const funcMock = jest.spyOn(Textbox.prototype, 'maskPromoCode');
const wrapper = mount(
<Provider store={store}>
<Textbox {...baseProps} name="redeem-promo" />
</Provider>
);
const inputField = wrapper.find('input');
const event = {
target: {
value: 'event value',
},
};
inputField.simulate('change', event);
expect(funcMock).toHaveBeenCalledWith(event.target.value);
});
【问题讨论】:
标签: reactjs unit-testing redux jestjs enzyme