После обновления моего приложения до 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? Я искал, но безуспешно..