Как в шутку издеваться над методом router.navigate

Я новичок в модульном тестировании с использованием Jest в Angular. В моем компоненте есть метод this.router.navigate(). Раньше я использовал Жасмин для тестирования. Для этого я сделал следующее:

import { Router } from '@angular/router';

Потом,

let router:Router;

Затем в beforeEach

router = TestBed.get(Router);

Затем в тестовом примере

it('should show news intially ', () => {
   const navigateSpy = spyOn(router,'navigate');
   component.showNews();
   expect(navigateSpy).toHaveBeenCalledWith(['/news']);
 });

Это испытание было пройдено. Но как мне сделать то же самое с помощью Jest? Пожалуйста помоги.

У меня есть метод ngOnInit(), который вызывает другой метод getDynamicMenus(). Ниже приведен метод ngOnInit():

 ngOnInit() {
    this.getDynamicMenus();
  }


  getDynamicMenus() {
    this.menuService.getAllMenus().subscribe(menus => {
      this.menus = menus._embedded.menu;
    });
  }

Пожалуйста, дайте мне знать, как издеваться над этим методом. В jasmine я издевался над getDynamicMenus() и назвал component.ngOnInit(). Но в Jest это не работает. Пожалуйста помоги.

jest.spyOn(router, 'navigate').mockReturnValue(null);, а затем expect(router.navigate).toHaveBeenCalledWith(['/news']);
Michael Desigaud 30.03.2021 17:21
Тестирование функциональных ngrx-эффектов в Angular 16 с помощью Jest
В системе управления состояниями ngrx, совместимой с Angular 16, появились функциональные эффекты. Это здорово и делает код определенно легче для...
Angular и React для вашего проекта веб-разработки?
Angular и React для вашего проекта веб-разработки?
Когда дело доходит до веб-разработки, выбор правильного front-end фреймворка имеет решающее значение. Angular и React - два самых популярных...
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Эпизод 23/17: Twitter Space о будущем Angular, Tiny Conf
Мы провели Twitter Space, обсудив несколько проблем, связанных с последними дополнениями в Angular. Также прошла Angular Tiny Conf с 25 докладами.
Угловой продивер
Угловой продивер
Оригинал этой статьи на турецком языке. ChatGPT используется только для перевода на английский язык.
Мое недавнее углубление в Angular
Мое недавнее углубление в Angular
Недавно я провел некоторое время, изучая фреймворк Angular, и я хотел поделиться своим опытом со всеми вами. Как человек, который любит глубоко...
Освоение Observables и Subjects в Rxjs:
Освоение Observables и Subjects в Rxjs:
Давайте начнем с основ и постепенно перейдем к более продвинутым концепциям в RxJS в Angular
1
1
25
1

Ответы 1

Эквивалент функции jasmine spyOn() - jest.spyOn (объект, имя метода).

it('should show news intially ', () => {
   const navigateSpy = jest.spyOn(router,'navigate');
   component.showNews();
   expect(navigateSpy).toHaveBeenCalledWith(['/news']);
});

Другие вопросы по теме