私はテストフレームワークとしてジャスミンを使用し、テストランナーとしてカルマを使用しています。このオブジェクトへの依存としてサービスを作成できるように、HttpClientオブジェクトを作成しようとしています。
TestBed.configureTestingModule({
declarations: [HttpClient],
imports: [HttpClient],
providers: [HttpClient]
});
TestBed.get(HttpClient);
しかし、次のエラーが発生します。
エラー:予期しない値 'HttpClient'がモジュール 'DynamicTestModule'によってインポートされました。 @NgModuleアノテーションを追加してください。
これを解決する方法を知っている人はいますか?
すべてのコードに従います:
import { I18nService } from "../../services/i18n.service";
import { TestBed, inject, async } from "@angular/core/testing";
import { EditionHistoryEventsModel } from "./dropdown.edition.history.events.model";
import { HttpClient } from "@angular/common/http";
import { TestUtil } from "../../utils/test.uti";
describe('DropDownEditionHistoryItemModel', () => {
let i18nService: I18nService;
beforeAll(() => {
TestBed.configureTestingModule({
declarations: [HttpClient],
imports: [HttpClient],
providers: [HttpClient]
});
i18nService = TestUtil.geti18nService(TestBed.get(HttpClient));
});
it('asdasd', () => {
let model: EditionHistoryEventsModel = new EditionHistoryEventsModel(i18nService);
expect(true).toBeTruthy();
});
});
declarations
配列にコンポーネント、ディレクティブ、またはパイプ以外のものを含めようとすると、発生するコンパイルエラーがスローされます。
宣言モジュールからHttpClient
を削除するようにテスト仕様をリファクタリングしました。HttpClientTestingModule
は、HttpClientModule
に対していくつかの重要な利点があるため、インポートします testing 、少し異なるパターンを使用してI18nService
のインスタンスを作成し、モデルクラスに渡します。
import { HttpClientTestingModule } from '@angular/common/http/testing';
describe('TestSpec', () => {
let intlService = I18nService;
beforeAll(() => {
TestBed.configureTestingModule({
declarations: [],
imports: [HttpClientTestingModule],
providers: [I18nService]
});
i18nService = TestBed.Get(I18nService);
});
モジュールファイルにHttpClientModuleをインポートする必要があります
import {HttpClientModule} from '@angular/common/http';