Модульное тестирование угловых компонентов — компонент внутри компонентов

#unit-testing #angular #webpack #karma-jasmine #angular-cli

#модульное тестирование #angular #webpack #карма-жасмин #angular-cli

Вопрос:

У меня есть вопрос относительно создания модульных тестов в Angular 2 (финальная версия — 2.0.0). Как я могу протестировать компонент, который зависит от других компонентов.

Например, app.component.ts, my app.component.ts зависит от других компонентов, таких как HomeComponent и другие компоненты. В app.component.ts это не проблема, поскольку модули импортируются через app.module.ts.

Однако в app.component.spec.ts я не знаю, как это структурировать, поскольку он не будет принимать модуль в качестве импорта. Кроме того, когда я запускаю тест, app.component.spec.ts запрашивает объявление сторонних библиотек, но я не могу импортировать модуль сторонней библиотеки, и я не могу импортировать компоненты внутри модуля один за другим.

Кстати, я использую последнюю версию angular-cli, которая уже использует webpack. Нужно ли мне что-то настраивать для выполнения тестов?

В руководстве по веб-сайту Angular testing (Angular 2 — Testing) не показано, как это сделать. Я был бы очень признателен за помощь, поскольку я застрял в этой проблеме.

Вот код:

 describe('App', () => {
  beforeEach(() => {
    TestBed.configureTestingModule({
      declarations: [
        AppComponent
      ],
      imports:[
        AppModuleComponents
      ]
    });
  });
 

После запуска ng test мне выдается запрос с этой ошибкой:
Изображение ошибки после запуска ng-теста

Комментарии:

1. ммм … трудно сказать, что вы просите без кода, вы должны иметь возможность включать модули, используя что-то вроде: fixture = TestBed.configureTestingModule({ imports: [HttpModule, DhcpModule], providers: [ {provide: TranslationService, useValue: translationService}, {provide: SessionsService, useValue: sessionsService}, {provide: DhcpConfigService, useValue: dhcpConfigService}, ] }).createComponent(DhcpPoolComponent);

2. Опубликуйте код, который вы используете в данный момент, чтобы попытаться настроить модули для теста

3. ОК. Я отредактирую сообщение, чтобы включить код и скриншот.

4. Я не знаю, почему он запрашивает HomeComponent, когда я не вызывал его из app.component.ts . Однако он просто маршрутизируется app.component.ts .

5. Вам нужно объявить все модули, которые используются подкомпонентами, точно так же, как вы делаете в своем app.module.ts