Angular2 Jasmine测试用例无法解析NavBarComponent的所有参数:(?,?)

时间:2017-07-03 11:30:50

标签: angular unit-testing karma-jasmine

我正在开发Angular2 Angular CLI项目,我正在为组件创建Jasmine测试用例,我的项目组件依赖于服务(它们是组件构造函数的参数)。当我尝试编写组件测试时,我得到无法解析NavBarComponent的所有参数:(?,?)

我已经模拟了服务,并且能够为服务编写测试。但是,对于组件测试用例,我遇到了上述问题。

知道如何解决这个问题会很棒。

这是我的代码

export class NavBarComponent implements OnInit {
      constructor(private sanitizer: DomSanitizer,private service:       AppService){

        }
}

规范文件

describe('NavBarComponent component ', () => {

    beforeEach(() => {
        TestBed.configureTestingModule({
            imports: [FormsModule, HttpModule],
            declarations: [NavBarComponent],
            providers: [{ provide: Router, useClass: class { navigate = jasmine.createSpy('navigate'); }}, 
            {provide: AppService, useClass: AppService},
            {provide: DomSanitizer, useClass: DomSanitizer}],
            schemas: [NO_ERRORS_SCHEMA]
        });
    });


     it('check the number of li elements in NavBarComponent component',
        async(() => {
            TestBed
                .compileComponents()
                .then(() => {
                    let fixture = TestBed.createComponent(NavBarComponent);
                    let userDOMEl = fixture.debugElement.nativeElement;
                    expect(userDOMEl.querySelectorAll('li').length).toEqual(17);
                });
        }));


});

1 个答案:

答案 0 :(得分:0)

当我的tsconfig.json将编译器选项emitDecoratorMetadata设置为false时,我遇到了类似的错误,并切换到true解决了它。