Вам придется либо издеваться над своим сервисом, что всегда является хорошей идеей, когда речь идет о модульном тестировании, либо использовать шпиона, как описано ниже.
Опция Mock:
...
providers: [
{provide: PartService, useClass: MockPartService},
],
...
class MockPartService {
list(): Observable<Part[]> {
return Observable.of([...]);
}
Вам нужно написать MockService с идентичной сигнатурой метода, той, которую вы вызываете в своем тесте. Возможно, вы захотите жестко закодировать ожидаемое возвращаемое значение в этот MockClass. Обычно это то, что вы хотите, когда хотите издеваться, например, запросы API и т. Д. c. так что ваш тест не сработает.
Опция Spy:
const mockParts: Part[] = [...]
const serviceSpy = spyOn(PartService, 'list').and.ReturnValue(Observable.of(mockParts));
Используйте это, если вы ожидаете, что заданный c возврат вашей службой для вашего теста.
Вы также можете смешивать оба теста. Заглушка spyOn(YourService, 'YourMethod').and.stub()
просто предотвращает вызов фактического метода, но не возвращает никакого значения.