Я делаю юнит-тестирование с Жасмин и Стамбулом.Я проверяю форму отправки.И у меня уже есть несколько модульных тестов для этого.Но теперь я хочу, чтобы:
this.allowSubmitAgain = false; this method:
this.diplomaService.saveDiplomaMetaData(false, this.resources.opslaanSpinnerTekst).pipe(map(() => {
не было выполнено.Потому что в этой строке в instanbul:
if (this.allowSubmitAgain) {
написано E: иначе путь не выбран.
Это весь метод:
diplomaDataSubmitted() {
if (this.formModel && this.formModel.form.valid) {
this.formService.formStoreService.hideValidationSummary(this.formName);
Eif (this.allowSubmitAgain) {
this.allowSubmitAgain = false;
this.diplomaService.saveDiplomaMetaData(false, this.resources.opslaanSpinnerTekst).pipe(map(() => {
const documents: DocumentModel[] = this.formModel.getAngularFormControl(DiplomaFormKeysModel.keys.diplomasUpload).value.files;
this.diplomaService.saveDocumentForDiploma(documents, () => {
this.router.navigateByUrl(RoutesRegisterModel.pathnameMyRegisterRouteDiplomas).then(() => {
this.feedbackService.addSuccessMessageOnMainPortal(
{
key: this.resourceKeys.succesvolWijziging,
value: this.resources.succesvolWijziging,
}
);
});
}, (error: any) => {
this.allowSubmitAgain = true;
observableThrowError(error);
}, this.resources, this.resourceKeys);
})).subscribe(() => { }, (error: any) => {
this.allowSubmitAgain = true;
observableThrowError(error);
});
}
} else {
this.formService.formStoreService.showValidationSummary(this.formName);
}
}
И это моймодульный тест:
it('should not allow submit beaucse form has errors', fakeAsync(() => {
// Arrange
const spySaveMetaDataDiploma = spyOn(diplomaServiceMock, 'saveDiplomaMetaData');
diplomaServiceMock.returnErrorResponse();
// Act
component.diplomaDataSubmitted();
fixture.detectChanges();
// Assert
expect(spySaveMetaDataDiploma).not.toHaveBeenCalled();
console.log('testcase');
expect(component.allowSubmitAgain).toBe(false);
}));
Но я получаю эту ошибку:
TypeError: Cannot read property 'subscribe' of undefined.
Так как это исправить?
Спасибо
У меня естьтеперь вот так:
it('should not allow submit beaucse form has errors', fakeAsync(() => {
// Arrange
const spySaveDiploma = spyOn(diplomaServiceMock, 'saveDiplomaMetaData').and.callThrough();
// Act
component.allowSubmitAgain = false;
// Assert
console.log('testcase');
expect(component.allowSubmitAgain).toBe(false);
expect(spySaveDiploma).not.toHaveBeenCalled();
}));
И я не получаю ошибок.
Но в коде покрытия Стамбула.«Другой путь не выбран» все еще виден.
Eif (this.allowSubmitAgain) {
Таким образом, в этой строке все еще говорится, что другой путь не выбран.
, если ясделать это так:
it('should not allow submit again beaucse form has errors', fakeAsync(() => {
const spySaveDiploma = spyOn(diplomaServiceMock, 'saveDiplomaMetaData').and.callThrough();
component.diplomaDataSubmitted();
component.allowSubmitAgain = false;
fixture.detectChanges();
console.log('testcase');
expect(component.allowSubmitAgain).toBe(false);
expect(spySaveDiploma).not.toHaveBeenCalled();
}));
Я получаю эту ошибку:
Expected spy saveDiplomaMetaData not to have been called.
Но что мне делать?