Angular9运行.spec.ts文件时出现"object file"相关报错如何解决?
Angular9 测试.spec.ts文件PDF报错排查方案
报错信息:
test is expecting test-file.pdf but it is coming as [object file]
报错根本原因
测试断言预期的值是test-file.pdf字符串(文件名),但实际拿到的是File类型的实例对象,二者类型不匹配导致断言失败。
排查解决步骤
第一步:修正断言逻辑
找到测试文件中对应报错的断言行,大概率是直接对File对象做了字符串匹配,修改为取File实例的
name属性校验即可:// 错误写法 expect(receivedFile).toEqual('test-file.pdf'); // 正确写法 expect(receivedFile.name).toEqual('test-file.pdf');第二步:校验模拟文件构造逻辑
如果测试中是手动构造模拟PDF文件,确认构造参数正确:
// 正确的模拟PDF文件构造示例 const testPdf = new File(['mock pdf content'], 'test-file.pdf', { type: 'application/pdf' });确认构造File的第二个参数拼写、大小写完全匹配预期的
test-file.pdf,没有拼写错误。第三步:校验业务代码的输出结构
若测试的是组件上传文件的逻辑,确认组件返回/抛出的参数结构符合预期:
- 如果组件对外暴露的是文件名,确认返回的是
file.name而非完整File对象 - 如果组件对外暴露的是完整File对象,确认测试侧的断言逻辑和预期保持一致
可以在测试中添加临时打印定位问题:console.log(receivedFile),运行测试后查看控制台输出的对象结构。
- 如果组件对外暴露的是文件名,确认返回的是
第四步:异步/第三方库逻辑校验
如果涉及异步文件请求、第三方PDF处理库:
- 确认HttpClient请求返回的Blob转File的过程中,文件名没有丢失
- 确认第三方库返回的文件结构没有将File实例嵌套在其他属性中,避免取值错误
内容的提问来源于stack exchange,提问作者Tirumala
相关产品推荐
相关产品推荐

