testing - 如何测试包裹在 Promise 中的 FileReader?
问题描述
当前代码:
export const readFilePromise = file => {
return new Promise((resolve, reject) => {
let reader = new FileReader();
reader.readAsDataURL(file);
reader.onload = () => {
resolve(reader.result);
};
reader.onerror = error => {
reject(error);
};
});
};
我能够测试 onload 方法
it('readFilePromise method', async () => {
const fileContentsEncodedInHex = [
'\x45\x6e\x63\x6f\x64\x65\x49\x6e\x48\x65\x78\x42\x65\x63\x61\x75\x73\x65\x42\x69\x6e\x61\x72\x79\x46\x69\x6c\x65\x73\x43\x6f\x6e\x74\x61\x69\x6e\x55\x6e\x70\x72\x69\x6e\x74\x61\x62\x6c\x65\x43\x68\x61\x72\x61\x63\x74\x65\x72\x73'
];
const blob = new Blob(fileContentsEncodedInHex);
const result = readFilePromise(blob);
const output = await result;
const expectedOutput =
'data:;base64,RW5jb2RlSW5IZXhCZWNhdXNlQmluYXJ5RmlsZXNDb250YWluVW5wcmludGFibGVDaGFyYWN0ZXJz';
expect(output).toEqual(expectedOutput);
});
我想知道如何测试onerror
?
解决方案
如果您因此有以下类似情况
reader.onerror = () => {
reject(reader.error);
};
然后下面应该工作。
只需事先知道传递空文件或什么都不传递的错误消息。我只是想创建一个场景
describe('Error Case', () => {
it('should return error message for empty file', () => {
const result = readFilePromise();
const n = () => {};
return result.then(n, (errorMessage) => {
expect('your error message here').to.equal(errorMessage);
});
});
推荐阅读
- python - 将图像转换为十进制值 [Python]
- android - 如何将此 JSON 放入房间 sql
- angular - Angular 5,同一页面上的两个组件
- java - 为闭包委托实现 methodMissing()
- asp.net - 如何将 ID 传递给控制器并使用它在模式上显示数据
- angular - 如何从Angular(5+)Renderer2中的所有子项中清除元素?
- python - 使用 python simplesalesforce 包的 Salesforce 批量 api
- flask - 使用烧瓶restful编组列表中的项目
- php - 从令牌中获取用户数据
- javascript - 没有将“exportAs”设置为“ngForm”的指令