Не в состоянии покрыть ngOnInit () в тестовом примере с жасмином - PullRequest
0 голосов
/ 25 мая 2018

Я новичок в Jasmine для Angular 5.

Я пытаюсь написать тестовый пример, но в своем отчете о покрытии я всегда получаю ngOnInit () t (), не покрытый: enter image description here

ниже - мой файл спецификаций, я передаю ноль в конструктор моего компонента, но на самом деле ему нужен сервис:

  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() ;
          }));

Пожалуйста, дайте мне знать, что мне не хватает, иЯ должен добавить сюда.

edit

Добавление компонента

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 в моем другом тестеСлучай из-за этого мой текущий тест не был запущен.Ошибка Noob!

1 Ответ

0 голосов
/ 25 мая 2018

Вам нужно позвонить ngOnInit() вручную, поскольку во время теста жизненный цикл отсутствует.Это намеренно.

Нет жизненного цикла = Методы ловушки жизненного цикла не вызваны.ngOnInit является одним из них.

...