#angular #typescript #unit-testing #karma-jasmine #karma-runner
Вопрос:
У меня есть простая функция, которая вызвала всплывающее окно NGB Modal, и я пытался написать тестовые примеры для того же самого.
Метод «this.modalService.open()» был успешным, но проблема заключалась в том, что «mockModalRef.componentInstance» и «mockModalRef.result» не покрывали.
.ts
@Injectable({ providedIn: 'root' }); export class HelperComponent { constructor( private modalService: ngbModal ) { } onAction() { const bigModelConfig = { windowClass: 'Small-modal' } as NgbModalOptions; const modalref = this.modalService.open(ConfirmationPopupComponent, bigModelConfig); modalref.componentInstance.message = 'Are you sure want to proceed'; modalref.result.then(result =gt; { if ('Yes' === result) { console.log('True'); } }) } }
.Спецификация
export class MockNgbModalRef{ componentInstance = { message: undefined, title: undefined } result: Promiselt;anygt; = new Promise((resolve, reject) =gt; resolve (true)); } describe('HelperComponent', () =gt; { let component: HelperComponent; let mockActiveModal: NgbActiveModal; let mockModalService: NbgModal; let mockModalRef: MockNgbModalRef = new MockNgbModalRef(); beforeEach(async () =gt; { mockModalService = jasmine.createSpyObj('NbgModal', ['open']).and.returnValue(mockModalRef as any); mockActiveModal = jasmine.createSpyObj('NgbActiveModal', ['Close']); TestBed.configureTestingModule({ declarations: [ HelperComponent ], imports[ NbgModule ], providers: [ {provide: NgbModal, useValue: mockModalService}, {provide: NgbActiveModal, useValue: mockActiveModal} ] }) .compileComponents(); }); beforeEach(() =gt; { component = TestBed.inject(HelperComponent); mockModalService = TestBed.inject(NgbModal); }); it('should create', () =gt; { const bigModelConfig = { windowClass: 'Small-modal' } as NgbModalOptions; component.onAction(); expect(mockModalService.open).toHaveBeenCalledWith(ConfirmationPopupComponent, bigModelConfig); expect(mockModalRef.componentInstance.message).toEqual('Are you sure want to proceed'); mockModalRef.result.then((result) =gt; { expect(result).toEqual('Yes'); }) }); });
Есть идеи, что не так и где я пропал.