javascript — Angular Karma Jasmine Ошибка: недопустимое состояние: не удалось загрузить сводку для директивы

Angular Karma Jasmine Ошибка: недопустимое состояние: не удалось загрузить сводку для директивы

Я разрабатываю github-репозиторий (с angular 7 и angular-cli), и у меня есть несколько тестов с Кармой и Жасмин, работающими в основной ветке.

Сейчас я пытаюсь добавить функцию отложенной загрузки, дело в том, что тесты, которые раньше проходили, сейчас их нет. Забавно, потому что проваливаются только тесты из ленивого загрузочного модуля …

Вот код и ошибка:

 import {async, TestBed} from '@angular/core/testing'; import {APP_BASE_HREF} from '@angular/common'; import {AppModule} from '../../app.module'; import {HeroDetailComponent} from './hero-detail.component'; describe('HeroDetailComponent', () ={amp}gt; { beforeEach(async(() ={amp}gt; { TestBed.configureTestingModule({ imports: [AppModule ], providers: [ {provide: APP_BASE_HREF, useValue: '/'} ], }).compileComponents(); })); it('should create hero detail component', (() ={amp}gt; { const fixture = TestBed.createComponent(HeroDetailComponent); const component = fixture.debugElement.componentInstance; expect(component).toBeTruthy(); })); }); 

Ошибка заключается в следующем:

 Chrome 58.0.3029 (Mac OS X 10.12.6) HeroDetailComponent should create hero detail component FAILED Error: Illegal state: Could not load the summary for directive HeroDetailComponent. at syntaxError Users/ismael.ramos.silvan/WebstormProjects/angular4-example-app/~/@angular/compiler/@angular/compiler.es5.js:1690:22) at CompileMetadataResolver.getDirectiveSummary Users/ismael.ramos.silvan/WebstormProjects/angular4-example-app/~/@angular/compiler/@angular/compiler.es5.js:15272:1) at JitCompiler.getComponentFactory Users/ismael.ramos.silvan/WebstormProjects/angular4-example-app/~/@angular/compiler/@angular/compiler.es5.js:26733:26) at TestingCompilerImpl.getComponentFactory Users/ismael.ramos.silvan/WebstormProjects/angular4-example-app/~/@angular/compiler/@angular/compiler/testing.es5.js:484:1) at TestBed.createComponent Users/ismael.ramos.silvan/WebstormProjects/angular4-example-app/~/@angular/core/@angular/core/testing.es5.js:874:1) at Function.TestBed.createComponent Users/ismael.ramos.silvan/WebstormProjects/angular4-example-app/~/@angular/core/@angular/core/testing.es5.js:652:1) at UserContext.it Users/ismael.ramos.silvan/WebstormProjects/angular4-example-app/src/app/heroes/hero-detail/hero-detail.component.spec.ts:18:29) at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invoke Users/ismael.ramos.silvan/WebstormProjects/angular4-example-app/~/zone.js/dist/zone.js:391:1) at ProxyZoneSpec.onInvoke Users/ismael.ramos.silvan/WebstormProjects/angular4-example-app/~/zone.js/dist/proxy.js:79:1) at ZoneDelegate.webpackJsonp.../../../../zone.js/dist/zone.js.ZoneDelegate.invoke Users/ismael.ramos.silvan/WebstormProjects/angular4-example-app/~/zone.js/dist/zone.js:390:1) 

Вы можете увидеть весь проект, для более подробной информации, если вам это нужно.

ОБНОВЛЕНИЕ: добавлено объявление, как это:

 beforeEach(async(() ={amp}gt; { TestBed.configureTestingModule({ imports: [ AppModule ], declarations: [HeroDetailComponent], providers: [ {provide: APP_BASE_HREF, useValue: '/'} ], }).compileComponents(); })); 

Теперь появляются новые ошибки:

 The pipe 'translate' could not be found ("{amp}lt;h1 class="section-title"{amp}gt;{{[ERROR -{amp}gt;]'heroDetail' | translate}}{amp}lt;/h1{amp}gt; {amp}lt;md-progress-spinner *ngIf="!hero" class="progre"): ng:///DynamicTestModule/HeroDetailComponent.html@0:28 Can't bind to 'color' since it isn't a known property of 'md-progress-spinner'. 

И еще … это как все директивы и компоненты из углового материала, а труба translate из ngx-translate / core, похоже, не включена …

ОБНОВЛЕНО: ЗАКЛЮЧИТЕЛЬНОЕ РЕШЕНИЕ

Проблема была в том, что HeroesModule нигде не был импортирован. Это работает, потому что HeroesModule объявляет HeroDetailComponent, который был первоначальной проблемой :

 import {async, TestBed} from '@angular/core/testing'; import {APP_BASE_HREF} from '@angular/common'; import {AppModule} from '../../app.module'; import {HeroDetailComponent} from './hero-detail.component'; import {HeroesModule} from '../heroes.module'; describe('HeroDetailComponent', () ={amp}gt; { beforeEach(async(() ={amp}gt; { TestBed.configureTestingModule({ imports: [ AppModule, HeroesModule ], providers: [ {provide: APP_BASE_HREF, useValue: '/'} ], }).compileComponents(); })); it('should create hero detail component', (() ={amp}gt; { const fixture = TestBed.createComponent(HeroDetailComponent); const component = fixture.debugElement.componentInstance; expect(component).toBeTruthy(); })); }); 
Понравилась статья? Поделиться с друзьями:
JavaScript & TypeScript
Adblock
detector