2

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.

renchan
  • 499
  • 5
  • 23

0 Answers0