2017-07-03 2 views
0

Ich arbeite an Angular2 Angular CLI Projekt und schreibe Jasmine Testfälle für Komponenten, Komponenten meines Projekts abhängig von Dienstleistungen (Sie sind Parameter für Komponentenkonstruktoren). Wenn ich versuche, Tests für Komponenten zu schreiben, bekomme ich Kann nicht alle Parameter für NavBarComponent auflösen: (?,?).Angular2 Jasmine Testfall Kann nicht alle Parameter für NavBarComponent auflösen: (?,?)

Ich habe Dienste verspottet und konnte Tests für Dienste schreiben. Allerdings bekomme ich das oben genannte Problem, wenn es um Komponententests geht.

Es wird großartig sein zu wissen, wie Sie dieses Problem beheben können.

Hier ist mein Code

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

     } 
} 

Spec-Datei

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

fügen Sie Ihren Konstruktor hinzu und testen Sie es ausprobiert. Fügen Sie immer bedeutsamenFul erforderlichen Code hinzu, wenn Sie eine Frage stellen – mayur

Antwort

0

ich einen ähnlichen Fehler hatte, als meine tsconfig.json den Compiler-Option emitDecoratorMetadata Satz false hatte, und die Umstellung auf true beschlossen.

Verwandte Themen