title: How to mock an activatedRoute parent Route in angular2 for testing purposes?
body: <p>Let's say I have this</p>
  
  <pre><code>export class QuestionnaireQuestionsComponent {
  
      questions: Question[] = [];
      private loading:boolean = true;
  
  
      constructor(
          private route: ActivatedRoute,
          public questionnaireService:QuestionnaireService) {}
  
      ngOnInit(){
          this.route.parent.params.subscribe((params:any)=&gt;{
              this.questionnaireService.getQuestionsForQuestionnaire(params.id).subscribe((questions)=&gt;{
                  this.questions = questions;
                  this.loading = false;
              });
          });
      }
  
  
  }
  </code></pre>
  
  <p>My component is actually working pretty well. Problem is that I want to unit test it but I can't figure out how to mock the <code>this.route.parent</code> object. Here's my test that fails</p>
  
  <pre><code>beforeEach(()=&gt;{
      route = new ActivatedRoute();
      route.parent.params = Observable.of({id:"testId"});
  
      questionnaireService = jasmine.createSpyObj('QuestionnaireService', ['getQuestionsForQuestionnaire']);
      questionnaireService.getQuestionsForQuestionnaire.and.callFake(() =&gt; Observable.of(undefined));
      component = new QuestionnaireQuestionsComponent(route, questionnaireService);
  });
  
  
  describe("on init", ()=&gt;{
      it("must call the service get questions for questionnaire",()=&gt;{
          component.ngOnInit();
          expect(questionnaireService.getQuestionsForQuestionnaire).toHaveBeenCalled();
      });  
  });
  </code></pre>
  
  <p>The test fails with this error </p>
  
  <pre><code>TypeError: undefined is not an object (evaluating 'this._routerState.parent') 
  </code></pre>