I am creating my unit tests with Jasmine and I have a question about the branch covered.
Does anyone know why the code part shows that the branches are not covered as we can see below?
This is the unit test:
describe('MyComponent', () => {
let component: MyComponent;
let fixture: ComponentFixture<MyComponent>;
let myService: MyService;
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [ MyComponent ],
imports: [ MaterializeModule, FormsModule, ReactiveFormsModule, HttpModule ],
providers: [
MyService,
FormBuilder
]
})
.compileComponents();
}));
beforeEach(() => {
fixture = TestBed.createComponent(MyComponent);
component = fixture.componentInstance;
slotsService = TestBed.get(MyService);
fixture.detectChanges();
});
function updateForm(name, surname) {
component.myForm.controls['name'].setValue(name);
component.myForm.controls['surname'].setValue(name);
}
it('should create', () => {
expect(component).toBeTruthy();
});
}
I've had the same issue for months from the moment I upgraded my projects to angular 4. Unfortunately it is a bug with the angular-cli version 1 and angular 4.
This bug is already logged in the angular-cli project: Test-coverage says that coverage is not 100%, but it truly is! #5871. Unfortunately at the moment, this issue is still open.
This is a snapshot from that logged issue, which matches the one you are asking about:
If you are facing this problem and , nevertheless, want to reach 100% branch coverage, there is at least a workaround available (see https://github.com/angular/angular-cli/issues/5526#issuecomment-324429322).
Simply add /* istanbul ignore next */
after the class export (without any line breaks):
export class InternalComponent {
constructor(private authService: any) {
}
} /* istanbul ignore next */
For Angular 2+ projects, this is now fixed if you upgrade to Angular CLI 1.5.
GitHub post: https://github.com/angular/angular-cli/issues/5526
来源:https://stackoverflow.com/questions/43215856/branches-on-constructor-not-covered