Angularjs   发布时间:2022-04-20  发布网站:大佬教程  code.js-code.com
大佬教程收集整理的这篇文章主要介绍了Angular 4.3中的单元测试HttpClientModule:来自HttpTestingController.expectOne(url)的未定义返回值大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
我试图了解如何使用作为新httpClientModule的一部分提供的模拟功能.我的测试代码几乎完全匹配现有文档中显示内容.但是,doc示例并不完整 – 例如,至少缺少TESTBad和inject的import语句.我假设来自@ angular / common / httphttpClient也是如此.我的测试代码添加了这些.

此测试失败,因为在httpmock.expectOne调用之后req最终未定义.我很欣赏为什么会这样.

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 4.3中的单元测试HttpClientModule:来自HttpTestingController.expectOne(url)的未定义返回值全部内容,希望文章能够帮你解决Angular 4.3中的单元测试HttpClientModule:来自HttpTestingController.expectOne(url)的未定义返回值所遇到的程序开发问题。

如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。

本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。