Как я могу издеваться над клиентом angular-auth-oidc для возврата поддельных данных

Как я могу издеваться над angular-auth-oidc-client, чтобы вернуть поддельный токен, используя karma-jasmine. Ниже приведен код, который мне нужен для написания примера модульного теста.

getToken() {
    return this.oidcSecurityService.getToken();
}

2 ответа

Решение

Вот моя статья, в которой рассматриваются все такие базовые сценарии тестирования. Есть еще одна статья, в которой конкретно говорится об этом деле. Не стесняйтесь, чтобы оставить свой отзыв

Вам нужно будет создать stub который будет издеваться над поведением oidcSecurityService,

export class OidcSecurityServiceStub{
   getToken(){
      return 'some_token_eVbnasdQ324';
   }
   // similarly mock other methods "oidcSecurityService" as per the component requirement

}

затем в spec файл, использовать useClass как показано ниже TestBed:

TestBed.configureTestingModule({
     declarations: [ WhateverComponent],
     providers:    [ {provide: OidcSecurityService(or whatever the name is), useClass: OidcSecurityServiceStub} ]
  });

Я предполагаю, что вы тестируете компонент. Вы можете попробовать метод, упомянутый здесь: https://angular.io/guide/testing.

Редактировать и выдержки с сайта:

let userServiceStub: Partial<UserService>;

beforeEach(() => {
  // stub UserService for test purposes
  userServiceStub = {
    isLoggedIn: true,
    user: { name: 'Test User'}
  };

  TestBed.configureTestingModule({
     declarations: [ WelcomeComponent ],
     providers:    [ {provide: UserService, useValue: userServiceStub } ]
  });

  fixture = TestBed.createComponent(WelcomeComponent);
  comp    = fixture.componentInstance;

  // UserService from the root injector
  userService = TestBed.get(UserService);

  //  get the "welcome" element by CSS selector (e.g., by class name)
  el = fixture.nativeElement.querySelector('.welcome');
});
Другие вопросы по тегам