Тестовый пример Jasmine для службы подтверждения PrimeNg не работает - PullRequest
1 голос
/ 01 августа 2020

У меня есть функция, которая выполняет некоторые операции в вызове "accept" службы подтверждения PrimeNg. Я попытался написать для него пример модульного теста:

  fit('submit preview config', fakeAsync(() => {
   addValues();
   component.submitConfig();
   component.submitPreviewForm();
   fixture.detectChanges();
   const confirmationService = TestBed.get(ConfirmationService);
   tick(200);
   spyOn<any>(confirmationService, 'confirm').and.callFake((params: any) => {
     params.accept();
     httpMock.expectOne(baseUrl + '/api/project/addOrUpdate').flush(mockSubmitResponse);
     expect(component.successMsz).toBe(mockSubmitResponse.message);
   });
  flush();
}));

Проблема в том, что выполнение никогда не происходит внутри callFake. Тестовый пример пройден, но операция не выполняется. Любые идеи приветствуются.

Это функция, которую я хочу протестировать:

submitPreviewForm() {

    const messageContent = `<strong>You have updated the following fields:</strong><br/>
    <span class="subText" style="font-size: 12px; color: blue;">&bull;${Array.from(this.updatedHighlightedFields).join('<br/> &bull;')}</span>
    <br/>
    <strong>This will clear JIRA data from DB. Are you sure you want to proceed?</strong>`;

    this.confirmationService.confirm({
        message: messageContent,
        accept: () => {
                    ...
                     }
    });
}

Я использую V6 PrimeNg. Я видел реализацию по этому вопросу о переполнении стека: Angular Модульный тест службы подтверждения PRIME ng

1 Ответ

0 голосов
/ 01 августа 2020

Ваш порядок действий кажется немного неправильным, вам нужно spy перед вызовом submitPreviewform.

Попробуйте следующее:

fit('submit preview config', fakeAsync(() => {
   const confirmationService = TestBed.get(ConfirmationService); // grab a handle of confirmationService
   spyOn<any>(confirmationService, 'confirm').and.callFake((params: any) => {
     params.accept();
     httpMock.expectOne(baseUrl + '/api/project/addOrUpdate').flush(mockSubmitResponse);
     expect(component.successMsz).toBe(mockSubmitResponse.message);
   }); // spy on confirmationService.confirm now
   addValues();
   component.submitConfig();
   component.submitPreviewForm();
   fixture.detectChanges();
   tick(200);
   flush();
}));
...