简体   繁体   English

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

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

I'm new in Angular testing.我是 Angular 测试的新手。 Now I am trying to test services .现在我正在尝试测试服务 When I run ng test for my unit tests, and when those tests use the service, I am getting the error:当我为我的单元测试运行ng test并且这些测试使用该服务时,我收到错误消息:

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

Here is my spec file:这是我的规范文件:

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();
  }));
});

And this is my .sevice.ts file imports:这是我的 .sevice.ts 文件导入:

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

You are injecting http module from @angular/common but you have imported @angular/http module.您正在从@angular/common注入http模块,但您已经导入了@angular/http模块。

Change to this:改成这样:

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

and you just need this:你只需要这个:

imports: [HttpClientTestingModule], 

or instead of actual ContactService you can mock it:或者代替实际的ContactService你可以模拟它:

class MockContactService {
   // properties and methods to mock
}

now you can use this within your provider:现在你可以在你的提供者中使用它:

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

暂无
暂无

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

相关问题 没有Http StaticInjectorError的提供者 - No provider for Http StaticInjectorError 错误:StaticInjectorError(DynamicTestModule)[CityService-> Http]:没有Http的提供程序 - Error: StaticInjectorError(DynamicTestModule)[CityService -> Http]: No provider for Http Angular 5 StaticInjectorError:[Http] - Angular 5 StaticInjectorError:[Http] 错误:未捕获(承诺):错误:StaticInjectorError(AppModule)[Http]:StaticInjectorError Http - Error: Uncaught (in promise): Error: StaticInjectorError(AppModule)[Http]: StaticInjectorError Http Angular 2错误NullInjectorError:没有Http的提供程序 - Angular 2 error NullInjectorError: No provider for Http 未捕获(承诺):错误:StaticInjectorError(AppModule)[employeService-> Http]: - Uncaught (in promise): Error: StaticInjectorError(AppModule)[employeService -> Http]: Angular 8:错误:未捕获(承诺):NullInjectorError:StaticInjectorError(AppModule) - Angular 8 : Error: Uncaught (in promise): NullInjectorError: StaticInjectorError(AppModule) auth0 http拦截器StaticInjectorError - auth0 http interceptor StaticInjectorError 出现错误:StaticInjectorError [InjectionToken DocumentToken] NullInjectorError:否InjectionToken DocumentToken提供程序 - Getting Error: StaticInjectorError[InjectionToken DocumentToken] | NullInjectorError: No provider for InjectionToken DocumentToken 错误:StaticInjectorError(DynamicTestModule)[RouterLinkWithHref -> Router]:(NullInjectorError:没有路由器的提供者!) - Error: StaticInjectorError(DynamicTestModule)[RouterLinkWithHref -> Router]: (NullInjectorError: No provider for Router!)
 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM