Я новичок в модульном тестировании с использованием 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 это не работает. Пожалуйста помоги.





Эквивалент функции jasmine spyOn() - jest.spyOn (объект, имя метода).
it('should show news intially ', () => {
const navigateSpy = jest.spyOn(router,'navigate');
component.showNews();
expect(navigateSpy).toHaveBeenCalledWith(['/news']);
});
jest.spyOn(router, 'navigate').mockReturnValue(null);, а затемexpect(router.navigate).toHaveBeenCalledWith(['/news']);