我的问题很简单,我以这种方式使用navigationByUrl()然后then():
this.router
.navigateByUrl(PAGE1, {
skipLocationChange: true
})
.then(() => {
this.router.navigate([PAGE2]);
});
和我模拟导航,navigingByUrl,然后这样:
const mockRouter = {
navigate: () => {},
navigateByUrl(url: string) { return url; },
then: () => {}
};
它对于Navigation和NavigationByUrl效果很好,但当时不起作用,我也不知道如何模拟此功能。
有人可以帮我吗?
首先,您必须注入路由器,然后必须使用spyOn方法监视路由器方法调用。希望我在此消息下方的示例对您有所帮助。让我知道是否需要更多帮助。
describe('#displayForm', () => {
it('should call Router.navigateByUrl with the ID of the form', inject([Router], (router: Router) => {
const spy = spyOn(router, 'navigateByUrl');
const url = spy.calls.first().args[0];
expect(url).toBe('YOUR_PAGE');
}));
});
感谢jonrsharpe提醒我找到了解决方案。解决的办法是通过这种方式来模拟NavigationByUrl:
navigateByUrl: () => {
return {
then: () => {}
}
}