Unit Testing Problem - Illustrator Extension in Angular 4
Hi guys,
I'm building an extension for Illustrator using Angular 4. My extension works ok but the I can't unit test it because the calls to CSInterface explode when the code isn't running inside Illustrator.
By default, the Angular CLI creates the project with Karma and Jasmine and I've created a basic test. Essentially the test spec.ts file blows up when trying to create the component because of the errors in CSInterface. This is understandable since it isn't running inside Illustrator but I can't figure out how to mock out the calls to CS interface.
An abbreviated version of the code looks like:
component file:
// Some imports here
declare var CSInterface: any;
@Component({
selector: 'app-notes',
templateUrl: './notes.component.html',
styleUrls: ['./notes.component.scss']
})
export class NotesComponent implements OnInit {
const csInterface = new CSInterface();
ngOnInit() {
// do some other stuff, then
this.csInterface.evalScript("myScript()");
}
}
export class NotesComponent implements OnInit {test file:
TestBed.configureTestingModule({
imports: [
FormsModule
],
providers: [
NotesComponent,
{
provide: SocketService, useClass: MockSocketService
},
{
provide: ExtensionStateService, useClass: MockExtensionStateService
}
],
});
}));
beforeEach(
inject([NotesComponent], (_notesComponent: NotesComponent) => {
component = _notesComponent;
})
);
it('basic test 2', () => {
expect(2 + 2).toBe(4);
});
Anyway, that is the basics. Essentially, I need to find a way to mock out the CSInterface so that it will allow the tests to run.
If it matters, the failure is on CSInterface line 480, where it does:
| CSInterface.prototype.hostEnvironment = JSON.parse(window.__adobe_cep__.getHostEnvironment()); |
It fails because __adobe_cep__ is undefined when running outside the CC environment.
Anyone else doing an angular project and have the included test suite working?
Thanks!
Marshall
