与Karma和Jasmin进行Angular2单元测试 - "遇到声明异常"

时间:2017-01-18 09:59:28

标签: angular karma-jasmine

我创建了一个角度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));
});

我哪里错了?

1 个答案:

答案 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();
    });
 });