web-dev-qa-db-ja.com

Jasmin + karma:「エラー:予期しない値「HttpClient」がモジュール「DynamicTestModule」によってインポートされました。@ NgModuleアノテーションを追加してください。」

私はテストフレームワークとしてジャスミンを使用し、テストランナーとしてカルマを使用しています。このオブジェクトへの依存としてサービスを作成できるように、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();
    });
});
7
Ricardo Rocha

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);
});
4
ericksoen

モジュールファイルにHttpClientModuleをインポートする必要があります

import {HttpClientModule} from '@angular/common/http';
0
Shanil Arjuna