шпионить за наблюдаемым внутри метода - PullRequest
0 голосов
/ 07 марта 2019

Я хочу проверить, установлен ли this.isLoggedIn, вызвав retrieveToken.

Я также хотел бы шпионить за this.authService.currentToken, возможно ли это или есть другой способ проверки того, что наблюдаемые были подписаны?

компонент

 public retrieveToken(): void {
        this.authService.currentToken
          .subscribe(status => {
            if (status) {
              this.isLoggedIn = true;
            }
          });
      }

сервис

export class AuthenticationService {
    public currentTokenSubject: BehaviorSubject<any>;
    public currentToken: Observable<any>;

    constructor(private http: HttpClient) {
        this.currentTokenSubject = new BehaviorSubject<any> ());
        this.currentToken = this.currentTokenSubject.asObservable();
    }

}

спецификация

 it('', () => {
    const fixture = TestBed.createComponent(AppComponent);
    const app = fixture.debugElement.componentInstance;
    const tokenSpy = spyOn(authService, 'currenToken').and.returnValue(of({}));
    app.retrieveToken();
    expect(tokenSpy).toHaveBeenCalled();
  });

сообщение об ошибке

Ошибка: метод currentToken () не существует Использование: spyOn (,)

1 Ответ

0 голосов
/ 07 марта 2019

Вы можете определить макет сервиса внутри вашего файла спецификации теста, например:

class AuthenticationServiceMock extends AuthenticationService {
   // here you can define what you need, in your case it is currentToken
   // which you need 
}

затем в TestBed, где вы настраиваете своих провайдеров, вам нужно указать, что вы хотите использовать созданный вами фиктивный класс

providers: [
            {
                provide: AuthenticationService,
                useValue: new AuthenticationServiceMock()
            },
            ]

Теперь внутри вашего тестового случая, когда вы вызываете "app.retrieveToken ();" currentToken должен быть доступен.

Надеюсь, это поможет вам :) 1009 *

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...