Sagen wir, ich dieseWie wird eine aktivierteRoute-Eltern-Route in angular2 zu Testzwecken gespottet?
export class QuestionnaireQuestionsComponent {
questions: Question[] = [];
private loading:boolean = true;
constructor(
private route: ActivatedRoute,
public questionnaireService:QuestionnaireService) {}
ngOnInit(){
this.route.parent.params.subscribe((params:any)=>{
this.questionnaireService.getQuestionsForQuestionnaire(params.id).subscribe((questions)=>{
this.questions = questions;
this.loading = false;
});
});
}
}
Meine Komponente haben ziemlich gut tatsächlich funktioniert. Problem ist, dass ich Einheit es testen will, aber ich kann nicht herausfinden, wie man das this.route.parent
Objekt verspottet. Hier ist mein Test, der
beforeEach(()=>{
route = new ActivatedRoute();
route.parent.params = Observable.of({id:"testId"});
questionnaireService = jasmine.createSpyObj('QuestionnaireService', ['getQuestionsForQuestionnaire']);
questionnaireService.getQuestionsForQuestionnaire.and.callFake(() => Observable.of(undefined));
component = new QuestionnaireQuestionsComponent(route, questionnaireService);
});
describe("on init",()=>{
it("must call the service get questions for questionnaire",()=>{
component.ngOnInit();
expect(questionnaireService.getQuestionsForQuestionnaire).toHaveBeenCalled();
});
});
den Test nicht besteht mit diesem Fehler
TypeError: undefined is not an object (evaluating 'this._routerState.parent')
Versuchen und nur 'verwenden {parent: {params: beobachtbare .of ({id: "testId"}) }} als ActivatedRoute' anstelle einer echten ActivatedRoute –
Kompilieren nicht nötig Ich brauche ein ActivatedRoute-Objekt –
Hast du die 'as ActivatedRoute' hinzugefügt? –