为什么在React单元测试中的模拟事件中使用sinon.spy模拟函数和React Component的asen.shallow渲染时,这是未定义的?

时间:2018-11-13 21:26:20

标签: javascript reactjs unit-testing sinon enzyme

每当我尝试模拟传递event对象的事件时,都会得到thisundefined

const onBlur = sinon.spy(Input.prototype.handleBlur);
const wrapper = shallow(<Input handleBlur={onBlur} />);
//...
wrapper.find('input').simulate('blur', { target: {value: ''} });

handleBlur方法中,this未定义。但是,如果我决定不模拟event对象,则事件未定义。

此外,我尝试使用mount代替: const wrapper = shallow(<Input handleBlur={onBlur} />); 但是,这是同一回事。但是,直到更新npm库,我什至无法理解这一点。

1 个答案:

答案 0 :(得分:0)

尝试使用

const onBlur = sinon.spy(Input.prototype, "handleBlur");

代替

const onBlur = sinon.spy(Input.prototype.handleBlur);