You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

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

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.09.27 18:06:07