我创建了一个角度2组件,现在我尝试使用Karma和Jasmin为我的组件创建单元测试,但是当我执行单元测试时,我得到了感知 encountered a declaration exception
我的规范文件如下
import { ComponentFixture, TestBed } from '@angular/core/testing';
import { By } from '@angular/platform-browser';
import { DebugElement } from '@angular/core';
import { PageTitle } from '../../../components/title/title.component';
it('true is true Out ', () => expect(true).toBe(true));
describe('PageTitle (inline template)', () => {
let comp: PageTitle;
let fixture: ComponentFixture<PageTitle>;
let de: DebugElement;
let el: HTMLElement;
TestBed.configureTestingModule({
declarations: [PageTitle],
});
fixture = TestBed.createComponent(PageTitle);
comp = fixture.componentInstance;
de = fixture.debugElement.query(By.css('h1'));
el = de.nativeElement;
it('true is true in', () => expect(true).toBe(true));
});
我哪里错了?
答案 0 :(得分:0)
PageTitle组件是否链接了html模板和/或css文件?如果是这样,那就是问题所在。 Angular正在通过异步调用加载它们,您的测试现在以同步模式运行。组件测试的正确设置应该是这样的:
describe('PageTitle', () => {
beforeEach(() => {
TestBed.configureTestingModule(({
imports: [],
providers: [],
declarations: [
PageTitle
]
}));
});
it('should render component', async(() => {
TestBed.compileComponents().then(() => {
let fixture = TestBed.createComponent(PageTitle);
let nativeElement = fixture.debugElement.nativeElement;
fixture.detectChanges();
});
});