Angulaire 2/4/6/7 - Tests Unitaires avec Routeur
Angulaire 2.0.0, je suis de l'unité de test d'un composant qui utilise le Routeur. Mais j'ai l' 'paramètres Fournis ne correspondent pas à la signature de l'appel de la cible." erreur. Dans le code de Visual studio dans spec.ts c'est le nouveau Routeur() qui est mis en surbrillance en rouge
J'ai vraiment reconnaissant si quelqu'un pourrait me permettre de savoir ce que la syntaxe correcte serait? Merci à l'avance. Mon code comme suit:
spec.ts
import { TestBed, async } from '@angular/core/testing';
import { NavToolComponent } from './nav-tool.component';
import { ComponentComm } from '../../shared/component-comm.service';
import { Router } from '@angular/router';
describe('Component: NavTool', () => {
it('should create an instance', () => {
let component = new NavToolComponent( new ComponentComm(), new Router());
expect(component).toBeTruthy();
});
});
Composant constructeur
constructor(private componentComm: ComponentComm, private router: Router) {}
Vous devez vous connecter pour publier un commentaire.
Vous pouvez aussi utiliser le RouterTestingModule et juste spyOn la navigation fonction comme ceci...
router = TestBed.get(Router)
et sauver mon routeur à une variable à côté luminaire, au lieu de la coulée de la composante de tout, comme recommandé dans le angulaire.io/guide/test#testbedgetgoSomewhere()
qui contient le codethis.router.navigate([/expectedUrl'])
(ce qui permettrait de naviguer à/expectedUrl
.C'est parce que la
Route
a quelques dépendances, il s'attend à ce passée à son constructeur.Si vous utilisez des composants Angulaires, vous ne devriez pas essayer de faire des tests indépendants. Vous devez utiliser l'angle de l'infrastructure de test pour préparer l'environnement de test. Ceci implique de laisser Angulaire créer le composant, le laisser injecter toutes les dépendances nécessaires, au lieu de vous en train d'essayer de créer tout.
Pour obtenir vous avez commencé, vous devriez avoir quelque chose comme
Ou quelque chose comme ça. Vous utilisez le
TestBed
pour configurer un module à partir de zéro pour les essais. Vous configurez c'est à peu près de la même façon avec un@NgModule
.Ici nous sommes juste se moquer du routeur. Depuis que nous sommes juste des tests unitaires, nous ne le voulez le réel de routage installation. Nous voulons juste assurez-vous qu'il est appelé avec les bons arguments. La maquette et espion sera en mesure de capturer l'appel pour nous.
Si vous ne souhaitez utiliser le vrai routeur, vous devez utiliser le
RouterTestingModule
, où vous pouvez configurer des routes. Voir un exemple ici et iciVoir Aussi:
Ici un axample si nous injectons service de l'Itinéraire dans notre composant de contrôleur:
Nous pouvons également tester d'autres functionalitites comme
navigate()
. Juste au cas où:Mon dossier avec tous les composants fictifs (maquette.des composants.les specs.ts)
Jasmine va mieux avec plein d'espionnage des objets...