如何使用Jest测试FileReader

时间:2019-06-26 00:43:13

标签: javascript reactjs jestjs enzyme filereader

我试图在测试中获得100%的覆盖率,并且这一测试通过了,但是仍然突出了render.onload函数

Component.jsx:

handleInputChange = (evt) => {
  evt.preventDefault();
  const { target } = evt;
  let value;
  let self = this;
  const reader = new FileReader();
  reader.onload = function (evt) {
    self.setState({
      previewPicture: evt.target.result,
      error: null
    });
  };
  reader.readAsDataURL(target.files[0]);
  value = target.files[0];          
  const name = target.name;
  this.setState({
    [name]: value
  });
};

测试:

    const evt = {
      target: {
        type: 'file',
        name: 'profilePicture',
        files: [{ name: 'testName' }]
      },
      preventDefault: jest.fn()
    };
    const component = mount(<Component {...props} />).instance();
    evt.target.files[0] = new Blob([evt.target.files[0]], {type : 'img/png'});
    component.handleInputChange(evt);
    expect(component.state.profilePicture).toEqual(file);
});

我想在测试中涵盖所有内容,但我不知道测试FileRader

1 个答案:

答案 0 :(得分:1)

您无需在组件范围内测试其他组件的行为。

因此,如果您要开发使用FileReader()的组件,则必须假定FileReader()正常工作。 FileReader()必须有自己的测试,以确保其行为也能正常工作,这样我们就可以在实现范围内保持每个组件的责任。