Как выполнить модульное тестирование функции с зависимостью (угловой) - PullRequest
0 голосов
/ 24 мая 2019

Я новичок в модульном тестировании и у меня есть некоторые основы. Тем не менее, я пытаюсь проверить метод. Этот метод вызывает функцию, которая является частью oidc-client.js. По сути, он входит в систему.

файл спецификаций


import { async, ComponentFixture, TestBed } from '@angular/core/testing';

import { AuthCallbackComponent } from './auth-callback.component';
import { RouterTestingModule } from '@angular/router/testing';


fdescribe('AuthCallbackComponent', () => {
  let component: AuthCallbackComponent;
  let fixture: ComponentFixture<AuthCallbackComponent>;

  beforeEach(async(() => {
    TestBed.configureTestingModule({
      imports: [RouterTestingModule],
      declarations: [ AuthCallbackComponent ]
    })
    .compileComponents();
  }));

  beforeEach(() => {
    fixture = TestBed.createComponent(AuthCallbackComponent);
    component = fixture.componentInstance;
    fixture.detectChanges();
  });

  it('should create', () => {
    expect(component).toBeTruthy();
  });
});

component.ts

import { UserManager,User,UserManagerSettings,WebStorageStateStore} from 'oidc-client';

  manager = new UserManager(this.getClientSettings());


  ngOnInit() {
    this.authService.completeAuthentication();

  }


  completeAuthentication(): Promise<void> {
    return this.manager.signinRedirectCallback().then(user => {
      this.user = user;
      this.router.navigate(['/']);
      this.setUser.next(this.user.profile);
      this.onLogin.next(true)
    });
  }



  getClientSettings() {
    return {
      authority: environment.authority,
      client_id: environment.client_id,
      redirect_uri: environment.login,
      post_logout_redirect_uri: environment.logout,
      response_type: 'code',
      scope: 'openid profile email phone address',
      filterProtocolClaims: true,
      loadUserInfo: false,
      accessTokenExpiringNotificationTime: 60,
      silentRequestTimeout: 10000,
      includeIdTokenInSilentRenew: true,
      automaticSilentRenew: true,
      silent_redirect_uri: environment.silent_redirect
    };
  }
}

Я не уверен, как мне это проверить. Когда я запускаю тест, который у меня есть, я просто получаю «Нет ответа». Я хочу, чтобы тест прошел, и, возможно, некоторые идеи о том, как протестировать completeAuthentication ()

1 Ответ

0 голосов
/ 24 мая 2019

Одним из инструментов для тестирования кода, который вы не можете контролировать, является объект stub Sinon , который может позволить вам смоделировать желаемое поведение сторонней зависимости.

Нет ничего особенного, если вы не увидите исходный код, который вы пытаетесь протестировать, но я надеюсь, что пример документации в проекте Sinon будет достаточным для вашего варианта использования.

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