Since jest-preset-angular uses JSDOM, which lacks some browser behaviors, you may need to provide global mocks.
- Create a
jest-global-mocks.ts file in your project root. - Import this file in your
setup-jest.ts file before calling setupZoneTestEnv().
Example jest-global-mocks.ts:
Object.defineProperty(document, 'doctype', {
value: '<!DOCTYPE html>',
});
Object.defineProperty(window, 'getComputedStyle', {
value: () => {
return {
display: 'none',
appearance: ['-webkit-appearance'],
};
},
});
/**
* ISSUE: https://github.com/angular/material2/issues/7101
* Workaround for JSDOM missing transform property
*/
Object.defineProperty(document.body.style, 'transform', {
value: () => {
return {
enumerable: true,
configurable: true,
};
},
});
import { setupZoneTestEnv } from 'jest-preset-angular/setup-env/zone';
import './jest-global-mocks';
setupZoneTestEnv();