Угловые тесты - зачем мне импортировать HttpClient, когда он не используется в компоненте? - PullRequest
0 голосов
/ 10 марта 2019

Я играю со своим очень простым приложением Angular, и я хотел бы знать, почему я получаю исключение "нет поставщика для HttpClient"? Хорошо, я избавился от этого исключения, импортировав HttpClientTestingModule в мой app.component.test.ts, но я не совсем уверен, зачем это нужно. Мой app.component.html выглядит так:

<app-http-client></app-http-client>

И это все. (Да, у меня есть HttpClientComponent в моем приложении. Немного смущает, но это нормально для меня). Я издевался над этим компонентом в таких тестах:

describe('AppComponent', () => {
beforeEach(async(() => {
  TestBed.configureTestingModule({
    declarations: [
      AppComponent,
      MockHttpClientComponent
    ],
    imports: [
      HttpClientTestingModule
    ]
  }).compileComponents();
}));

@Component({
selector: 'app-http-client',
template: ''
})
class MockHttpClientComponent {
}

, поэтому не важно, что содержит app-html-client.

HttpClient также не используется в файле app.component.ts:

@Component({
selector: 'app-root',
templateUrl: './app.component.html',
styleUrls: ['./app.component.css']
})
export class AppComponent implements OnInit {
title = 'http-client';

constructor(private bookService: BookService) {
}

ngOnInit() {
  this.bookService.initDb();
}

HttpClient используется в BookService для получения книг из моей фиктивной базы данных H2, связанной с внутренним приложением SpringBoot, но тесты не хотят, чтобы я импортировал или предоставлял BookService или любой другой модуль или службу, импортированные или предоставленные в app.module.ts. Но они хотят это в случае HttpClient.

Так почему я должен импортировать HttpClientTestingModule в файл app.component.spec.ts моего приложения?

...