gpt4 book ai didi

angular - Angular 4.3 中的单元测试 HttpClientModule : undefined return value from HttpTestingController. expectOne(url)

转载 作者:太空狗 更新时间:2023-10-29 18:08:16 27 4
gpt4 key购买 nike

我正在尝试了解如何使用作为新 HttpClientModule 的一部分提供的模拟功能。我的测试代码与现有文档中显示的内容几乎完全匹配。但是,文档示例并不完整 - 例如,至少缺少 TestBadinject 的导入语句。我假设来自@angular/common/http 的 HttpClient 也是如此。我的测试代码添加了这些。

此测试失败,因为 reqhttpMock.expectOne 调用后最终未定义。我很感激任何关于为什么会这样的见解。

import { TestBed, inject } from '@angular/core/testing';
import { HttpClient } from '@angular/common/http';
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';

describe('HttpClientTestingModule', () => {
beforeEach(() => TestBed.configureTestingModule({
imports: [ HttpClientTestingModule ],
providers: [ HttpClient, HttpTestingController]
}));

it('expects a GET request', inject([HttpClient, HttpTestingController], (http: HttpClient, httpMock: HttpTestingController) => {
http
.get('/data')
.subscribe(data => expect(data['name']).toEqual('Test Data'));

const req = httpMock.expectOne('/data');
expect(req).toBeDefined();
expect(req.request.method).toEqual('GET');
req.flush({name: 'Test Data'});
httpMock.verify();
}));
});

最佳答案

虽然我不明白为什么会这样,但我通过从 TestBed.configureTestingModule 中删除以下内容使其正常工作:

提供者:[HttpClient, HttpTestingController]

我欢迎任何关于为什么我需要将自己的服务添加到 providers 集合而不是 HttpClient、HttpTestingController 的见解。

关于angular - Angular 4.3 中的单元测试 HttpClientModule : undefined return value from HttpTestingController. expectOne(url),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45446680/

27 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com