Se moquant de routeur.les événements.subscribe() Angular2
Dans mon application.composante.ts j'ai le texte suivant ngOnInit fonction:
ngOnInit() {
this.sub = this.router.events.subscribe(e => {
if (e instanceof NavigationEnd) {
if (!e.url.includes('login')) {
this.loggedIn = true;
} else {
this.loggedIn = false;
}
}
});
}
Actuellement je suis en essais si le sub n'est pas nulle, mais je veux tester la fonction avec une couverture de 100%.
Je veux de se moquer de l'objet routeur afin que je puisse simuler l'URL, puis de tester si la ce.loggedIn est correctement réglé.
Comment pourrais-je procéder pour se moquer de cette fonction? Je l'ai essayé mais je ne sais pas comment j'aimerais profiter de cette sur avec le rappel concernés et avec l'NavigationEnd.
Vous devez vous connecter pour publier un commentaire.
J'ai trouvé la réponse, si quelqu'un est à la recherche pour elle:
provide
la maquette de la classe à laTestBed
.providers: [{provide: Router, useClass: MockRouter]
J'ai créé une version du routeur stub Angulaires docs qui utilise cette méthode pour mettre en œuvre NavigationEnd événement pour les essais de:
JS:
RoutesRecognized
au lieu deNavigationEnd
?Accepté la réponse est correcte, mais c'est un peu plus simple, vous pouvez remplacer
par:
Et de trouver ci-dessous le test complet du fichier pour tester la fonction en question:
L'exemple précédent
public events = Observable.of( new NavigationEnd(0, 'http://localhost..'));
ne semble pas fonctionner selon le Karma, qui se plaint sujet:Malgré (raillé) Routeur instance événements' abonnement rappel a été exécuté avec succès dans
ngOninit()
de l'application d'origine.composante.ts, j'.e principal composant de l'application sous test par Karma:En effet, la façon Routeur a été la risée sorte de semble incomplet, inexact structure de Karma prospective: en raison de
router.routerState
qui s'avère être non définie au moment de l'exécution.Ici est de savoir comment Angulaire Routeur a été "écrasé" exactement de mon côté, y compris
RoutesRecognized
événements articifically cuit commeObservable
s dans mon cas:à s'adapter à ce que
ngOnInit()
corps attend, nécessitantRoutesRecognized
événement avec structure profonde:Récapitulation et résumé de mon <package.json> contenu: