Angular 使用KeyClock进行角度测试;“用户未登录”;

Angular 使用KeyClock进行角度测试;“用户未登录”;,angular,jasmine,karma-runner,keycloak,Angular,Jasmine,Karma Runner,Keycloak,我现在有一个小应用程序,它使用KeyClope来实现sso。 但是,当我想对main.component.ts进行ng测试时,我遇到了标准“it should create”测试失败的问题,我收到了以下错误消息: 主组件应该创建 错误:用户未登录 下面是我的main.component.spec文件 从导入{async,ComponentFixture,TestBed} '角度/核心/测试' 从“./main.component”导入{MainComponent};进口 {AppTopBarCo

我现在有一个小应用程序,它使用KeyClope来实现sso。 但是,当我想对main.component.ts进行ng测试时,我遇到了标准“it should create”测试失败的问题,我收到了以下错误消息:

主组件应该创建 错误:用户未登录

下面是我的main.component.spec文件

从导入{async,ComponentFixture,TestBed} '角度/核心/测试'

从“./main.component”导入{MainComponent};进口 {AppTopBarComponent}来自“../app.topbar.component”;进口 {AppMenuComponent}来自“../app.menu.component”;导入{RouterModule} 来自“@angular/router”;从导入{RouterTestingModule} '角度/路由器/测试';从'@angular/forms'导入{FormsModule}; 从'priming/priming'导入{MenuModule};进口 “../app.menu.component”中的{AppSubMenuComponent};进口 {keydeposervice}来自'keydepose angular'

描述('MainComponent',()=>{let component:MainComponent;
let夹具:组件夹具

beforeach(异步(()=>{

在每个之前(()=>{ fixture=TestBed.createComponent(主组件); 组件=fixture.componentInstance; fixture.detectChanges();});//TODO:期望用户登录,但没有发生-->与keydepate有关('should 创建',()=>{ expect(component.toBeTruthy();})

}))

我没有太多的测试经验,所以我不确定我应该如何处理这个问题?以某种方式模拟KeyClope


谢谢!

是的,您应该模拟服务:

 let Mock1 ={
   someMethod: jasmine.createSpy('someMethod');
  };
//在TestBed.configureTestingModule中
提供者:[{provide:keydeposervice,useValu:Mock1}]

谢谢你的回答!现在似乎更进一步了,但现在我得到以下错误:“TypeError:this.keydeposervice.getUsername不是函数”你模拟了服务中的所有方法吗?@AlexanderPoshtaruk-你能详细说明一下吗?keydoveService中有14个方法。所有这些方法都需要模拟才能运行测试?你应该重构并将大函数拆分成小函数
 let Mock1 ={
   someMethod: jasmine.createSpy('someMethod');
  };