Угловой жасмин toHaveBeenCalledWith с queryParams не работает - PullRequest
0 голосов
/ 25 сентября 2019

У меня есть этот тест:

it('should redurect to admin programs', () => {
    ...

    expect(navigateSpy).toHaveBeenCalledWith(['/admin/programs', {queryParams: {pub_status: 'active'}}]);
});

И выдает эту ошибку:

Error: Expected spy navigate to have been called with 
[ [ '/admin/programs', Object({ queryParams: Object({ pub_status: 'active' }) }) ] ] but actual calls were 
[ [ '/admin/programs' ], Object({ queryParams: [ pub_status: 'active' ] }) ].

Также активированный макет маршрута выглядит так:

{
  provide: ActivatedRoute,
  useValue: {
    snapshot: {
      queryParams: {
        'countryValId[]': 'ES'
      }
    }
  }
}

И навигация шпиона такова:

router = TestBed.get(Router);
navigateSpy = spyOn(router, 'navigate');

Как мне это решить?Эта аннотация очень странная:

{ queryParams: [ pub_status: 'active' ] } <-- wtf this is not a proper array

error in terminal

Спасибо !!

1 Ответ

0 голосов
/ 25 сентября 2019

это синтаксис метода навигации маршрутизатора, у вас есть ошибка в скобках массива []

this.router.navigate(['/admin/programs'], {queryParams: {pub_status: 'active'}});

, а не

this.router.navigate(['/admin/programs', {queryParams: {pub_status: 'active'}}]);

, поэтому он имеетбыть

expect(navigateSpy).toHaveBeenCalledWith(['/admin/programs'] //here is the error
    , {queryParams: {pub_status: 'active'}});
...