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

Angular Material 6组件测试报错:DynamicTestModule声明异常值

解决Angular Material 6.0.1测试时的PropDecoratorFactory报错问题

问题根源

你遇到的这个报错,核心原因是在TestBed的declarations数组里错误地添加了Angular Material的内置组件和Input装饰器。declarations应该只存放你自己编写的组件、指令或管道;Angular Material的组件属于第三方库,需要通过导入对应模块来引入;另外Input是Angular的属性装饰器,根本不是可声明的Angular元素,放在declarations里完全不符合规范。

修复方案

修改你的TestBed配置,把Material相关组件从declarations中移除,替换为导入对应的Material模块,同时删掉错误加入的Input:

TestBed.configureTestingModule({
  imports: [
    ReactiveFormsModule, 
    FormsModule,
    // 导入所需的Angular Material模块
    MatAutocompleteModule,
    MatFormFieldModule,
    MatChipsModule,
    MatIconModule
  ], 
  declarations: [ 
    ChipInputAutoCompleteComponent // 仅保留自定义组件
  ], 
  providers: []
})

原因说明

  • Angular Material的组件(比如MatAutocomplete、MatChip等)都封装在专属模块中,测试时必须导入对应模块,而非直接声明组件。否则TestBed会将这些第三方组件当作自定义组件处理,导致内部装饰器解析逻辑混乱,进而触发PropDecoratorFactory相关报错。
  • Input是@Input()装饰器,用于定义组件的输入属性,它不属于可被declarations数组收录的Angular元素类型,这也是触发错误的关键诱因之一。

修改完成后重新运行测试,这个报错就会消失了。浏览器运行正常是因为你的应用模块已经正确导入了Material模块,只有测试模块的配置错误才导致了测试环境的异常。

内容的提问来源于stack exchange,提问作者user1706507

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.27 09:30:03