Скажем, у меня есть этотКак издеваться над активированным родительским маршрутизатором Маршрут в угловом2 для целей тестирования?
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;
});
});
}
}
Мой компонент на самом деле работает довольно хорошо. Проблема в том, что я хочу, чтобы модуль тестировал его, но я не могу понять, как издеваться над объектом this.route.parent
. Вот мой тест, который не удается
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();
});
});
тест не пройден с этой ошибкой
TypeError: undefined is not an object (evaluating 'this._routerState.parent')
Try и просто использовать '{Родитель: {Титулы: Наблюдаемые .of ({ID: "TestID"}) }} как ActivatedRoute' вместо реального ActivatedRoute –
Не скомпилировать Мне нужен объект ActivatedRoute –
Вы добавили 'as ActivatedRoute'? –