Как издеваться над угловым ActivatedRoute - PullRequest
0 голосов
/ 28 января 2019

У меня есть этот код ActivatedRoute с map, за которым следует subscribe.

export class MyComponent implements OnInit {

    constructor(private actr: ActivatedRoute) {

    this.actr.data.map(data => data.aList).subscribe((res) => {
        console.log('res ------------------------- ', res); // It is not showing this.
        this.myResponse = res;
    });
}

   ngOnInit() {
      // some code
      // myResponse is undefined
   }

}

Я пытался в спецификации файла:

class MockActivatedRouter {

    public map = (data) => data.aList = of({some: [] });
    // Or 
    public map = (data) => of({some: [] });
 }

Ни один из них не работает.

Ответы [ 2 ]

0 голосов
/ 29 января 2019

Оказывается, мы можем просто сделать:

class MockActivatedRouter {
  public map = (data) => of(MyResponse.data.aList);
}

class MyResponse {
  static data = {
     // data 
  }
}
0 голосов
/ 29 января 2019

Я думаю, что вы хотите смоделировать это так:

class MockActivatedRouter {
  data = of({some: [] }); // Dont remember the old rxjs5 syntax but you might want to use Observable.of(...)
}

Значит ActivatedRoute имеет свойство data, которое можно наблюдать, на которое вы подписываетесь в конструкторе.

Я обычносмоделируйте это просто с простым объектом и предоставьте наблюдаемый как Subject, чтобы иметь возможность испускать в любое время, когда я хочу в тесте.

И я предполагал, что вы знаете, как обеспечить свой макет в тесте:

TestBed.configureTestingModule({
  ...
  providers: [{
    provide: ActivatedRoute,
    useClass: MockActivatedRouter
  }]
});
...