【发布时间】:2018-11-04 22:10:12
【问题描述】:
我是 Angular 5 的 Jasmine 新手。
我正在尝试编写一个测试用例,但在我的覆盖率报告中,我总是得到 ngOnInit()t() 未被覆盖:
以下是我的规范文件,我将 null 传递给我的组件的构造函数,但实际上它需要一个服务:
let component: LoginPageHeaderComponent;
let fixture: ComponentFixture<LoginPageHeaderComponent>;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ LoginPageHeaderComponent ],
providers: [ ServerBindingService ],
imports: [ HttpClientTestingModule]
})
.compileComponents();
component = new LoginPageHeaderComponent(null);
}));
it('Should initialize all variables ', async(() => {
component.ngOnInit();
const a = component.isNetworkCallFinsihed;
const b = component.allLeftHeaderOptions$;
const c = component.allRightHeaderOptions$;
component.ngOnInit();
fixture.detectChanges();
expect (a).toBeTruthy() ;
}));
请让我知道我缺少什么,我应该在这里添加。
编辑
添加组件
import { ServerBindingService } from './../server-binding.service';
import { Component, OnInit, NgModule } from '@angular/core';
import { Observable } from 'rxjs/Observable';
@NgModule({
})
@Component({
selector: 'app-login-page-header',
templateUrl: './login-page-header.component.html',
styleUrls: ['./login-page-header.component.css']
})
export class LoginPageHeaderComponent implements OnInit {
allLeftHeaderOptions$: Observable<any>;
allRightHeaderOptions$: Observable<any>;
isNetworkCallFinsihed: Observable<boolean>;
constructor(private serverBindingService: ServerBindingService) { }
ngOnInit() {
console.log('called');
this.allLeftHeaderOptions$ = this.serverBindingService.leftHeaderLinks$;
this.allRightHeaderOptions$ = this.serverBindingService.rightHeaderLinks$;
this.isNetworkCallFinsihed = this.serverBindingService.isNetworkCallFinished$;
}
}
解决方案 我在我的其他测试用例上使用了 fdescribe,因为我当前的测试用例没有运行。菜鸟错误!
【问题讨论】:
标签: angular angular5 karma-jasmine