私は単純なサービスをテストしています。このサービスでは、別のサービスの2つの値が使用されます。Angular2のテスト:サービスの注入された値を変更する
基本的に、私はこれらの2つの値をテストしたいと思います:isLogged = falseをとisLogged =真。
注入されたサービスの値を変更するだけで済みますか、それとも別の処理が必要ですか? (私は知らないので、途中で私を導くことができれば、私はそれを感謝するだろう)。ここで
は、テストのために私のコードです:私は私の問題への解決策を発見した
EDIT。プロバイダにのパラメータを注入する必要があります。その後、そのプロパティを必要に応じて変更できます。
import { TestBed, async, inject } from '@angular/core/testing';
import { AuthGuardService } from './authguard.service';
import { Router } from '@angular/router';
import { AuthService } from './auth.service';
describe('AuthguardService',() => {
let calledUrl = '/logged/main/last';
let authServiceStub = {
isLogged: false,
redirectUrl: calledUrl
};
class RouterStub {
navigate(url: string) { return url; }
};
beforeEach(() => {
TestBed.configureTestingModule({
providers: [
AuthGuardService,
{ provide: AuthService, useValue: authServiceStub },
{ provide: Router, useClass: RouterStub },
]
});
});
it('should ...', inject([AuthGuardService, Router], (service: AuthGuardService, router: Router) => {
let spy = spyOn(router, 'navigate');
service.checkLoginState(calledUrl);
expect(spy).toHaveBeenCalledWith(['/login']);
}));
});
はい、可能です。これは、AuthServiceがどのようなもので、どのように使用されているかによっても異なる場合があります。 – estus
AuthServiceは、 'isLogged'がfalseの場合、' 'login''にリダイレクトし、それがtrueの場合、** checkLoginState **に与えられたパラメータ – trichetriche