Issue
My component has both getCurrentNavigation
and router.navigate
I have implemented getCurrentNavigation
from here
Now page having
constructor() {
if (router.getCurrentNavigation().extras.state) {
this.levelId = router.getCurrentNavigation().extras.state.arcadeSelectedGame;
}
}
and navigation to another page
const navigationExtras: NavigationExtras = {
state: {
dummyObject,
gameplay_log_data,
arcadeLevelData: this.arcadeLevelData
}
};
this.router.navigate(['ad-page'], navigationExtras)
Now I have applied solution from here then navigation works but then router.getCurrentNavigation().extras.state
stopped working
Solution
I found a value to implement both the cases parallels.
I have defined navigate: jasmine.createSpy('navigate')
with getCurrentNavigation
. and used useValue
in provide in place of useClass
.
Here is the code.
let mockRouter = {
navigate: jasmine.createSpy('navigate'),
getCurrentNavigation: () => {
return {
extras: {
state:{
arcadeSelectedGame: '-LAbVp7C0lTu9CV-Mgt-'
}
}
}
}
}
In Provider array
{ provide: Router, useValue: mockRouter},
let router: Router;
Inside foreach
router = TestBed.inject(Router);
Test cases
it('Play click check navigation', async () => {
component.playArcade();
expect(mockRouter.navigate).toHaveBeenCalledTimes(1)
expect(mockRouter.navigate).toHaveBeenCalledWith(['ad-page']);
})
Answered By - cakePHP
0 comments:
Post a Comment
Note: Only a member of this blog may post a comment.