После обновления моего приложения до Angular 18.0.4 мои тестовые классы говорят:
'HttpClientTestingModule' is deprecated. Add provideHttpClientTesting() to your providers instead.
Поэтому я адаптировал свой код следующим образом:
await TestBed.configureTestingModule(
{
imports: [
AssetDetailsComponent,
],
providers: [
// replacement for HttpClientTestingModule:
provideHttpClientTesting()
]
})
.compileComponents();
Однако, когда я запускаю тесты, я получаю следующую ошибку:
NullInjectorError: R3InjectorError(Standalone[AssetDetailsComponent])[InventoryActionService -> InventoryActionService -> _HttpClient -> _HttpClient]:
NullInjectorError: No provider for _HttpClient!
Если я использую provideHttpClient()
вместо provideHttpClientTesting()
, это сработает, но я сомневаюсь, что это лучшая практика. Каково правильное решение этой проблемы?
Также добавьте provideHttpClient()
перед provideHttpClientTesting()
providers: [
provideHttpClient(),
provideHttpClientTesting()
]
Как упоминалось в документах .
Я добавил документ к своему ответу.
Вам также нужен provideHttpClient()
. Поскольку provideHttpClientTesting()
настраивает env, но не предоставляет httpClient
, включите provideHttpClient()
, как показано ниже:
import { TestBed } from '@angular/core/testing';
import { AssetDetailsComponent } from './asset-details.component';
import { provideHttpClient } from '@angular/common/http';
import { provideHttpClientTesting } from '@angular/common/http/testing';
await TestBed.configureTestingModule({
imports: [
AssetDetailsComponent,
],
providers: [
provideHttpClient(), // Provide the HttpClient along with HttpClientTesting
provideHttpClientTesting(),
]
}).compileComponents();
Спасибо за быстрый ответ: можно ли найти эту информацию в официальной документации Angular? Я искал, но безуспешно..