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

Uncaught TypeError: 无法读取undefined的push属性,求排查测试代码问题

问题排查:Uncaught TypeError: Cannot read properties of undefined (reading 'push')

核心原因分析

这个错误几乎都是HTTP测试依赖未正确初始化导致的,结合你的代码,重点排查以下几个点:

具体修复步骤

  • 必须导入HttpClientTestingModule
    Angular测试环境不会自动提供HttpClient的模拟实现,必须在TestBed配置中导入HttpClientTestingModule,否则HttpClient实例为undefined,调用get方法时内部请求队列的push操作会直接抛出错误。

    补全后的测试初始化代码应该是这样:

    import { TestBed } from '@angular/core/testing';
    import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
    import { YourService } from './your-service-path'; // 替换为你的服务实际路径
    import { environment } from '../environments/environment';
    
    describe('YourService', () => {
      let service: YourService;
      let httpMock: HttpTestingController;
    
      beforeEach(() => {
        TestBed.configureTestingModule({
          imports: [HttpClientTestingModule], // 关键:导入这个模块
          providers: [YourService]
        });
        // 正确注入服务和测试控制器
        service = TestBed.inject(YourService);
        httpMock = TestBed.inject(HttpTestingController);
      });
    
      afterEach(() => {
        httpMock.verify(); // 验证所有请求都已处理,避免泄漏
      });
    
      it('#getTimeSessionLogout', () => {
        // 提前定义预期响应,避免未定义错误
        const response = { /* 这里填你的预期响应数据 */ };
    
        service.getTimeSessionLogout().subscribe(data => {
          expect(data).toEqual(response);
        });
    
        const request = httpMock.expectOne(`${environment.apiMaster}/config-system/time_session`);
        expect(request.request.method).toBe('GET');
    
        request.flush(response);
      });
    });
    
  • 检查服务和测试控制器的注入
    确保你通过TestBed.inject()正确获取了service和httpMock实例,不要直接声明变量却不赋值,否则会引发后续调用的未定义错误。

  • 确认服务已在测试模块中注册
    必须在TestBed.configureTestingModule的providers数组里添加你的服务类,否则service实例会是undefined,调用getTimeSessionLogout时也会触发连锁错误。

额外细节修正

  • 测试用例里的response变量需要提前定义,否则会报response is not defined的错误(你的代码中未看到该变量的定义,这也是潜在问题)。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.16 08:05:29