Angular Непокрытые линии для наблюдаемых в модульном тесте: - PullRequest
1 голос
/ 07 апреля 2020

Привет всем, я сейчас тестирую свое приложение Angular, но я не знаю, почему в сопроводительном отчете строки внутри подписки наблюдаемых никогда не освещаются:

Вот мой метод в моем компоненте:

   onUpdateLastReview(
    id: number,
    dtDebut: Date,
    dtFin: Date,
    montant: number,
    nivInvalidite: NivInvalidite,
    orderDisplay: number,
    pensionpere: number,
    code: string,
    libelleLong: string,
    indicateur: any,
  ): void {
    this.modifyFormLastReview.markAllAsTouched();
    if (this.modifyFormLastReview.invalid) {
      this.submitLastReview = true;
      return;
    }
    {
      this.mypensionreviselast = new PensionInvalidite();
      const myOrganisme = new OrganismeFinanceur();
      myOrganisme.code = code;
      myOrganisme.libelleLong = libelleLong;
      this.mypensionreviselast.dtDebut = dtDebut;
      this.mypensionreviselast.dtFin = dtFin;
      this.mypensionreviselast.montant = montant;
      this.mypensionreviselast.nivInvalidite = nivInvalidite;
      this.mypensionreviselast.orderDisplay = orderDisplay;
      this.mypensionreviselast.montant = montant;
      this.mypensionreviselast.pensionpere = pensionpere;
      this.mypensionreviselast.indicateur = indicateur;
      this.mypensionreviselast.organisme = myOrganisme;
      this.serviceHttp.updatePension(id, this.mypensionreviselast).subscribe(res => {
        this.serviceHttp.getAllPensions().subscribe(resp => {                     //not covered from here
          this.pensionsInvalidite = resp; 
          this.pensionsInvalidite.sort((a, b) => a.orderDisplay - b.orderDisplay);
          this.dateError = false;
          this.submitLastReview = false;
          this.modifyFormLastReview.reset();
          this.orgaSubmit = false;
          this.orgaSubmitBis = false;
          this.myDtFin = null;                                 //to here
        });
      });
    }
  }

И вот как я продолжаю свою работу c .ts: Я хотел бы найти тест, который охватывал бы все строки моего метода в компоненте. Я пытаюсь шпионить за методом моего сервиса и возвращаю ответ для сравнения с объектом "component.pensionsInvalidite" в методе моего компонента, но, похоже, он не работает ...

    describe('TestComponent', () => {
  let component: TabPensionInvaliditeComponent;
  let fixture: ComponentFixture<TabPensionInvaliditeComponent>;
  let componentHtmlElement: HTMLElement;
  let componentDebugElement: DebugElement;
  let servicePensions: ServicePensionHTTPService;

  const fb: FormBuilder = new FormBuilder();
  const pensionsInvalidite: PensionInvalidite[] = [
    {
      pensionpere: -1,
      dtDebut: new Date('1996-11-11'),
      dtFin: new Date('1996-11-12'),
      montant: 23,
      nivInvalidite: NivInvalidite.inv1,
      indicateur: Indicateur.initiale,
      organisme: {
        code: 'AUTRE REG.',
        libelleLong: 'AUTRE REGIME SPECIAL',
        libelleCourt: null,
      },
      orderDisplay: 0,
      id: 1,
    },
  ];
  const mockServicePensions = {
    savePension: () => {
      return of(pensionsInvalidite);
    },
    updatePension: () => {
      return of(pensionsInvalidite);
    },
    deletePension: () => {
      return of(pensionsInvalidite);
    },
    getPension: () => {
      return of(pensionIvalidite);
    },
    getAllPensions: () => {
      return of(pensionsInvalidite);
    },
  };
  beforeEach(async(() => {
    TestBed.configureTestingModule({
      declarations: [
        TabPensionInvaliditeComponent,
      ],
      imports: [
        HttpClientTestingModule
      ],
      providers: [
        { provide: ServicePensionHTTPService, useValue: mockServicePensions },
      ],
    }).compileComponents();
    servicePensions = TestBed.get(ServicePensionHTTPService);
  }));

  beforeEach(() => {
    (fixture = TestBed.createComponent(TabPensionInvaliditeComponent)),
      (component = fixture.componentInstance);
    componentDebugElement = fixture.debugElement;
    componentHtmlElement = componentDebugElement.nativeElement;
    fixture.detectChanges();
  });

 it('Test onUpdateLastReview method', async(() => {            //here is my test
    spyOn(component, 'onUpdateLastReview').and.callThrough();
    const response: PensionInvalidite[] = pensionsInvalidite;
    spyOn(servicePensions, 'getAllPensions').and.returnValues(of({ response }));
    component.onUpdateLastReview(
      1,
      pensionIvalidite.dtDebut,
      pensionIvalidite.dtFin,
      pensionIvalidite.montant,
      pensionIvalidite.nivInvalidite,
      pensionIvalidite.orderDisplay,
      pensionIvalidite.pensionpere,
      pensionIvalidite.organisme.code,
      pensionIvalidite.organisme.libelleLong,
      pensionIvalidite.indicateur,
    );
    component.pensionsInvalidite = pensionsInvalidite;
    expect(component.onUpdateLastReview).toHaveBeenCalled();
    expect(component.pensionsInvalidite).toEqual(response);
  }));
})
...