angular2 tests à l'aide de jasmin pour vous abonner méthode
J'ai un spec code de test comme ça
it('login test', () => {
const fixture = TestBed.createComponent(component);
fixture.detectChanges();
let authService = fixture.debugElement.injector.get(Auth);
spyOn(authService, 'login').and.returnValue('');
const elements = fixture.nativeElement;
fixture.componentInstance.login();
expect(authService.login).toHaveBeenCalled();
});
et la mise en œuvre du code de cette
login() {
this.auth.login(this.username, this.password).subscribe(() => {
}
});
}
il donne une erreur:
cette.auth.login(...).abonnez-vous n'est pas une fonction
Pourquoi cette erreur se produit?
Vous devez vous connecter pour publier un commentaire.
Vous avez besoin de revenir à quelque chose avec un
subscribe
méthode, comme le composant appelssubscribe
directement à partir delogin
. Une chaîne n'est pas. Vous pouvez simplement retourner un objet avec unsubscribe
fonction et cela devrait fonctionnerOu si vous souhaitez passer un réel observable, vous pourriez
Vous pourriez avoir besoin pour l'importation
rxjs/add/observable/of
Sur rxjs v6, vous devez utiliser
of
au lieu deObservable.of
ouObservable.from
e.get l'importation
Vous avez besoin pour se moquer de la fonction de connexion comme suit:
vous pourriez trouver la observables.si la fonction non définie, de sorte que vous devez importer les observables de cette façon:
Changer votre espion pour le 'login' méthode de votre authService de retour d'un observable au lieu d'une valeur. Vous aurez besoin d'importer:
Installation de votre espion:
Appel de connexion:
Affirmer: