Jasmin + karma: «Ошибка: неожиданное значение« HttpClient », импортированное модулем« DynamicTestModule ». Пожалуйста, добавьте аннотацию @NgModule». - PullRequest
0 голосов
/ 31 августа 2018

Я использую жасмин в качестве основы тестирования и карму в качестве тестового бегуна. Я пытаюсь создать объект 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();
    });
});

Ответы [ 2 ]

0 голосов
/ 02 сентября 2018

Полученная вами ошибка компиляции выдается при попытке включить в массив declarations что-то, кроме компонента, директивы или канала.

Я реорганизовал вашу тестовую спецификацию, чтобы удалить HttpClient из модуля объявлений, импортировать HttpClientTestingModule, поскольку он имеет некоторые существенные преимущества по сравнению с HttpClientModule для тестирования , и использовал немного другой шаблон для создания экземпляра вашего 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);
});
0 голосов
/ 31 августа 2018

Вы должны импортировать HttpClientModule в файл вашего модуля

import {HttpClientModule} from '@angular/common/http';
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...