我是Angular单元测试的新手。当我使用服务进行单元测试时,面临以下问题。
Error: StaticInjectorError(DynamicTestModule)[PersonService -> HttpClient]:
StaticInjectorError(Platform: core)[PersonService -> HttpClient]:
NullInjectorError: No provider for HttpClient!
import { TestBed, async, inject } from '@angular/core/testing';
import { HttpClientTestingModule, HttpTestingController } from '@angular/common/http/testing';
import { PersonService } from './person.service';
describe('PersonService', () => {
let personService: PersonService;
let httpMock: HttpTestingController;
beforeEach(() => {
TestBed.configureTestingModule({
imports: [
HttpClientTestingModule
],
providers: [
PersonService
],
});
personService = TestBed.get(PersonService);
httpMock = TestBed.get(HttpTestingController);
});
it(`should fetch posts as an Observable`, async(inject([HttpTestingController, PersonService],
(httpClient: HttpTestingController, personService: PersonService) => {
const postItem = [
{
"userId": 1,
"id": 1,
"title": "sunt aut facere repellat provident occaecati excepturi optio reprehenderit",
"body": "quia et suscipit\nsuscipit recusandae consequuntur expedita et cum\nreprehenderit molestiae ut ut quas totam\nnostrum rerum est autem sunt rem eveniet architecto"
},
{
"userId": 1,
"id": 2,
"title": "qui est esse",
"body": "est rerum tempore vitae\nsequi sint nihil reprehenderit dolor beatae ea dolores neque\nfugiat blanditiis voluptate porro vel nihil molestiae ut reiciendis\nqui aperiam non debitis possimus qui neque nisi nulla"
},
{
"userId": 1,
"id": 3,
"title": "ea molestias quasi exercitationem repellat qui ipsa sit aut",
"body": "et iusto sed quo iure\nvoluptatem occaecati omnis eligendi aut ad\nvoluptatem doloribus vel accusantium quis pariatur\nmolestiae porro eius odio et labore et velit aut"
}
];
personService.getPosts()
.subscribe((posts: any) => {
expect(posts.length).toBe(3);
});
let req = httpMock.expectOne('https://myweb/posts');
expect(req.request.method).toBe("GET");
req.flush(postItem);
httpMock.verify();
})));
});