I'm trying write unit test for the component. Since I have @ViewChild elements in it I want to use TestComponentBuilder
,
it('should close modal',
async(inject([TestComponentBuilder], (tcb) => {
tcb.createAsync(UploadImage).then((fixture: ComponentFixture<UploadImage>) => {
fixture.detectChanges();
let instance: UploadImage = fixture.componentInstance;
spyOn(instance.uploadDialog.nativeElement, 'close');
instance.closeModal();
expect(instance.uploadDialog.nativeElement.close).toHaveBeenCalled();
})
}))
);
However in tcb test as soon as I'm writing fixture.detectChanges()
, no matter what is written after it, I'm getting the following error message. The problem is that Error message is not written at all, only stack trace.
invoke@/Users/username/project-folder/config/spec-bundle.js:8059:35 <- webpack:///~/zone.js/dist/zone.js:323:0
run@/Users/username/project-folder/config/spec-bundle.js:7952:51 <- webpack:///~/zone.js/dist/zone.js:216:0
/Users/username/project-folder/config/spec-bundle.js:8307:62 <- webpack:///~/zone.js/dist/zone.js:571:0
invokeTask@/Users/username/project-folder/config/spec-bundle.js:8092:44 <- webpack:///~/zone.js/dist/zone.js:356:0
runTask@/Users/username/project-folder/config/spec-bundle.js:7992:59 <- webpack:///~/zone.js/dist/zone.js:256:0
drainMicroTaskQueue@/Users/username/project-folder/config/spec-bundle.js:8210:44 <- webpack:///~/zone.js/dist/zone.js:474:0
run@/Users/username/project-folder/config/spec-bundle.js:4193:30 <- webpack:///~/core-js/modules/es6.promise.js:89:0
/Users/username/project-folder/config/spec-bundle.js:4206:32 <- webpack:///~/core-js/modules/es6.promise.js:102:0
flush@/Users/username/project-folder/config/spec-bundle.js:4551:12 <- webpack:///~/core-js/modules/_microtask.js:18:0
The interesting thing is, the tests where I don't use TestComponentBuilder
are run fine. If anyone had the same problem please help with resolving the issue.