Исходя из того, что сказал Андрей Гейтж, мы можем сделать токен получателем. Теперь внешние классы / контексты могут получить только token
, но не могут писать в него. Это поможет нам насмехаться над ним в модульных тестах.
Примерно так:
export class MyService {
// the _ indicates this is a private variable
private _token: string;
get token(): string {
return this._token;
}
// whenever you set your token, do this._token = ....
public myMethod(): Promise<boolean> {
if(!this.token) // do Something
else // do Something else
}
}
Затем в вашем файле spe c, если вы уже настроили его
it('should do the if block', async(done) => {
spyOnProperty(service, 'token', 'get').and.returnValue(null);
await service.myMethod();
await fixture.whenStable();
// the rest of your assertions
});
it('should do the else block', async(done) => {
spyOnProperty(service, 'token', 'get').and.returnValue('a token value');
await service.myMethod();
await fixture.whenStable();
// the rest of your assertions
});