我的组件有一个方法..
onUpdateProperty = (key, value) => {
this.state.formData[key] = value;
}
我想测试是否在更改输入后调用此方法...
it('on update input should update formData', function () {
const wrapper = mount(<MyComp.wrappedComponent {...this.minProps} />);
const spy = spyOn(wrapper.instance(), 'onUpdateProperty');
expect(spy).not.toHaveBeenCalled();
const nameInput = wrapper.find('[name="name"]');
nameInput.simulate('change', {
target: { name: 'name', value: 'v1' },
});
wrapper.update();
// expect(spy).toHaveBeenCalledWith('name', 'v1');
expect(spy).toHaveBeenCalled();
});
wrappedComponent 是因为我使用了Mobx-react
答案 0 :(得分:6)
我的建议是不要监视组件的内部功能,而只是测试state
。
expect(wrapper.state.formData.name).toBe('v1)
如果你真的想监视它,你必须监视你组件的原型。
jest.spyOn(MyComp.wrappedComponent.prototype, 'onUpdateProperty')