簡體   English   中英

使用 karma jasmine 使用路由器 navigateByUrl 對 function 進行單元測試

[英]unit test a function with router navigateByUrl using karma jasmine

我正在嘗試對以下具有路由器 navigateByUrl 的 function 進行單元測試,但無法執行。然后阻止

.ts 代碼:

back(){ 

    this.router.navigateByUrl('/routepath').then(() => {

         Object.keys(['column']).forEach((obj, val) => {
            myService.setDefaultGroup();
         });

    });
}

這是我在我的 spec.ts 中嘗試過的

class MockRouter {
   navigateByUrl = () => {
    return {
      then: () => {}
     }
   }
}

configureTestSuite(() => {
    TestBed.configureTestingModule({
       providers: [{ provide: Router, useClass: MockRouter } ]
    })
});

describe('should call back', () => {
    it('should call Router.navigateByUrl', inject([Router], (router: Router) => {
        const spy = spyOn(router, 'navigateByUrl');
        component.back();
    }));
});

收到的output是什么

類型錯誤:無法讀取未定義的屬性“then”

預期的:

測試用例應該執行

我正在使用業力和 jasmine 對此進行單元測試。 如果我遺漏了什么,請幫助我

當您spyOn一個方法時,它會將其存根以返回未定義。

您需要使用.and.callThrough()以免丟失實現細節。

嘗試:

describe('should call back', () => {
    it('should call Router.navigateByUrl', inject([Router], (router: Router) => {
        const spy = spyOn(router, 'navigateByUrl').and.callThrough();
        component.back();
    }));
});

暫無
暫無

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

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