簡體   English   中英

如何開玩笑地模擬 router.navigate 方法

[英]How to mock the router.navigate method in jest

我是在 Angular 中使用 Jest 進行單元測試的初學者。 在我的組件中,我有this.router.navigate()方法。 早些時候我使用 Jasmine 來測試它。 為此,我做了以下事情:

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() function 的等價物是jest.spyOn(object, methodName)

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

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM