angular – 错误:预计没有打开的请求,找到1
当我尝试执行HTTP单元测试用例时,我收到此错误
我正在使用Angular 5.我该如何解决这个问题 下面是我正常GET的代码.下面的代码只是带来正常的GET import { TestBed } from '@angular/core/testing'; import { HttpClientTestingModule,HttpTestingController,TestRequest } from '@angular/common/http/testing'; import { DangerService } from './danger.service'; import { DangerFlag } from '../danger.model'; describe('DataService Tests',() => { let dataService: DangerService; let httpTestingController: HttpTestingController; let testDangerFlags: DangerFlag[] = [ "sample data" ] beforeEach(() => { TestBed.configureTestingModule({ imports: [ HttpClientTestingModule ],providers: [ DangerService ] }); dataService = TestBed.get(DangerService); httpTestingController = TestBed.get(HttpTestingController); }); afterEach(() => { httpTestingController.verify(); }); fit('should get all danger flags',() => { dataService.getDangerFlagDetails() .subscribe((data: DangerFlag[]) => { expect(data.length).toBe(3); }); }); }); 解决方法
当您发出模拟请求时会发生这种情况,但不会“完成/关闭”它.运行测试后,打开的请求可能会保持打开状态,最终导致内存泄漏,尤其是在多次运行测试时. 就客户端而言,订阅模拟请求会调用它,但就后端而言,它不会“完成”它. “完成”请求可以通过多种方式完成; backend = TestBed.get(HttpTestingController) > backend.expectOne(URL) – 这将测试一个url,并’关闭’后端调用.这不会测试params,如果你的查询中有params,它将失败. 这些方法中的任何一个都将关闭http请求,并使backend.verify()表现出来. 参考 >您可以找到深入的例子,以及更多解释here (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |