我试图在测试中获得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
答案 0 :(得分:1)
您无需在组件范围内测试其他组件的行为。
因此,如果您要开发使用FileReader()
的组件,则必须假定FileReader()
正常工作。 FileReader()
必须有自己的测试,以确保其行为也能正常工作,这样我们就可以在实现范围内保持每个组件的责任。