Как я могу издеваться над клиентом 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');
});