Angular服务单元测试报错ReferenceError: providers_2未定义求助
问题分析与解决方法
错误根源
你碰到的ReferenceError: providers_2 is not defined是两个语法/用法错误引发的:
- 测试代码的
describe块未正确闭合,最后一行的)应该是});,语法错误会导致Angular测试编译器解析混乱,抛出这类莫名其妙的变量未定义报错。 - 获取服务实例的方式错误:
TestBed.createComponent()是用来创建Angular组件实例的,不能用来获取服务,需改用TestBed.inject()(Angular 9+版本)来获取服务实例。
修正后的测试代码
import { TestBed } from '@angular/core/testing'; import { GLOBAL_CONFIG, TimeZoneStateService, } from '@sdo/givs-common-service'; describe('TimeZoneStateService', () => { let service: TimeZoneStateService; beforeEach(() => { TestBed.configureTestingModule({ providers: [ TimeZoneStateService, { provide: GLOBAL_CONFIG, useValue: { timeZoneResolver: () => 'America/Toronto', }, }, ], }); // 替换错误的createComponent,改用inject获取服务实例 service = TestBed.inject(TimeZoneStateService); }); it('should be created', () => { expect(service).toBeTruthy(); }); }); // 修正此处的闭合括号
额外注意事项
如果测试中需要识别ViewConfig类型,确保已导入对应的类型定义文件,避免出现类型校验错误。
内容的提问来源于stack exchange,提问作者John Mai
相关产品推荐
相关产品推荐

