web-dev-qa-db-fra.com

Jasmin + karma: "Erreur: valeur inattendue 'HttpClient' importée par le module 'DynamicTestModule'. Veuillez ajouter une annotation @NgModule."

J'utilise le jasmin comme cadre de test et le karma comme lanceur de test. J'essaie de créer un objet HttpClient afin que je puisse créer un service qui en tant que dépendance à cet objet:

TestBed.configureTestingModule({
    declarations: [HttpClient],
    imports: [HttpClient],
    providers: [HttpClient]
});
TestBed.get(HttpClient);

Mais j'obtiens l'erreur suivante:

Erreur: valeur inattendue 'HttpClient' importée par le module 'DynamicTestModule'. Veuillez ajouter une annotation @NgModule.

Quelqu'un a une idée de comment résoudre ce problème?

Suit tout le code:

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

L'erreur de compilation que vous obtenez est levée lorsque vous essayez d'inclure autre chose qu'un composant, une directive ou un canal dans le tableau declarations.

J'ai refactorisé votre spécification de test pour supprimer le HttpClient du module de déclarations, importez le HttpClientTestingModule car il présente des avantages significatifs par rapport au HttpClientModule pour test , et a utilisé un modèle légèrement différent pour créer une instance de votre I18nService pour passer à votre classe de modèle.

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

Vous devez importer HttpClientModule dans votre fichier de module

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