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

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

问题描述:

我正在开发Angular2 Angular CLI项目,并且正在编写Jasmine测试用例中的组件,我的项目中依赖于服务的组件是组件构造函数的参数)。当我尝试编写组件测试时,得到无法解析NavBarComponent的所有参数:(?,?)Angular2 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); 
       }); 
     })); 


}); 
+0

添加你的构造函数并测试你的尝试。当你问问题时总是添加含义所需的代码 – mayur

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