Мой тест не обнаруживает изменений. Вот мой компонент:
toggleUploadModal() {
const modalRef = this.ngbModal.open(UploadFilesComponent, { size: 'lg', backdrop: 'static' });
modalRef.componentInstance.DeliverableTransaction = this.transactionDetails;
modalRef.result.then((res) => {
if (res.status === 'success') {
this.deliverableTransactionService.updateDeliverableTransaction(this.route.snapshot.params.id, {
submissionStatus: 'In Process'
})
}
setTimeout(() => {
this.uploadStatus = {};
}, 5000);
})
}
Мой тест содержит:
beforeEach(async(() => {
TestBed.configureTestingModule({
declarations: [TransactionFileViewer, NgxPermissionsAllowStubDirective],
providers: [...],
imports: [...],
schemas: [
NO_ERRORS_SCHEMA, CUSTOM_ELEMENTS_SCHEMA
],
})
.compileComponents();
fixture = TestBed.createComponent(TransactionFileViewer);
downloadService = TestBed.get(DownloadService);
component = fixture.componentInstance;
fixture.detectChanges();
submissionFileService = TestBed.get(SubmissionFileService);
deliverableDefinitionService = TestBed.get(DeliverableDefinitionService);
service = TestBed.get(DeliverableDefinitionDetailViewService);
deliverableTransactionService = TestBed.get(DeliverableTransactionService);
modalService = TestBed.get(NgbModal);
flashMessagesService = TestBed.get(FlashMessagesService);
}));
fit('should update the submissionStatus upon file upload', () => {
spyOn(modalService, 'open').and.returnValue({
componentInstance: {},
result: Promise.resolve({
uploadedFileCount: 5,
status: 'success'
})
});
spyOn(deliverableTransactionService, 'updateDeliverableTransaction').and.returnValue(true);
component.toggleUploadModal();
expect(deliverableTransactionService.updateDeliverableTransaction).toHaveBeenCalledWith(1, {
submissionStatus: 'In Process'
});
})
Однако, updateDeliverableTransaction
никогда не вызывается в тесте. Что я делаю неправильно? Я предполагаю, что мне нужно как-то привязать область действия к result
, но я не уверен, как. Я использую bluebird
, если это имеет значение.