加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 综合聚焦 > 服务器 > 安全 > 正文

angular – 错误:预计没有打开的请求,找到1

发布时间:2020-12-17 17:59:29 所属栏目:安全 来源:网络整理
导读:当我尝试执行HTTP单元测试用例时,我收到此错误 我正在使用Angular 5.我该如何解决这个问题 下面是我正常GET的代码.下面的代码只是带来正常的GET import { TestBed } from '@angular/core/testing';import { HttpClientTestingModule,HttpTestingController,T
当我尝试执行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);
        });
    });
});

解决方法

Expected no open requests,found 1

当您发出模拟请求时会发生这种情况,但不会“完成/关闭”它.运行测试后,打开的请求可能会保持打开状态,最终导致内存泄漏,尤其是在多次运行测试时.

就客户端而言,订阅模拟请求会调用它,但就后端而言,它不会“完成”它. “完成”请求可以通过多种方式完成;

backend = TestBed.get(HttpTestingController)

> backend.expectOne(URL) – 这将测试一个url,并’关闭’后端调用.这不会测试params,如果你的查询中有params,它将失败.
> backend.expectNone(URL) – 如果您正在测试具有参数的网址,expectOne()将无法正常工作.你必须使用backend.match().匹配不会自动关闭后端api调用,因此您可以在它之后使用expectNone()来关闭它.
> .flush(RESPONSE) – flush将强制发送http呼叫的响应,然后关闭呼叫.注意:如果在match()上调用flush,请注意返回数组的匹配,即backend.match(…)[0] .flush({})

这些方法中的任何一个都将关闭http请求,并使backend.verify()表现出来.

参考

>您可以找到深入的例子,以及更多解释here
> expectOne(),expectNone()和match()都返回TestRequest的实例

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读