![](/img/trans.png)
[英]Unit Test error for Angular using Karma / Jasmine for Router
[英]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.