繁体   English   中英

Angular 9 - 错误:StaticInjectorError[Http]:StaticInjectorError[Http]:NullInjectorError:没有 Http 提供者

[英]Angular 9 - Error: StaticInjectorError[Http]: StaticInjectorError[Http]: NullInjectorError: No provider for Http

我是 Angular 测试的新手。 现在我正在尝试测试服务 当我为我的单元测试运行ng test并且这些测试使用该服务时,我收到错误消息:

Error: StaticInjectorError[Http]:  
StaticInjectorError[Http]: 
NullInjectorError: No provider for Http!

这是我的规范文件:

import { TestBed, inject } from "@angular/core/testing";
import { ContactService } from "./contact.service";
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import {HttpClientModule} from '@angular/common/http';

describe("ContactService", () => {
  beforeEach(() => {
    TestBed.configureTestingModule({
        imports: [HttpClientTestingModule, HttpClientModule], 
        providers: [ContactService],
    });
  });
  
  it("should ...", inject([ContactService], (service: ContactService) => {
    expect(service).toBeTruthy();
  }));
});

这是我的 .sevice.ts 文件导入:

import { Headers, Http } from '@angular/http';
import 'rxjs/add/operator/toPromise';
import { Contact } from '../';

您正在从@angular/common注入http模块,但您已经导入了@angular/http模块。

改成这样:

import { Headers, Http } from '@angular/common/http';

你只需要这个:

imports: [HttpClientTestingModule], 

或者代替实际的ContactService你可以模拟它:

class MockContactService {
   // properties and methods to mock
}

现在你可以在你的提供者中使用它:

providers: [
   {
     provide: ContactService,
     useClass: MockContactService
   }
]

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM