Ich überlege, jest
zum Testen meiner Hybridanwendung (Angular + AngularJS) zu verwenden. Ich benutze jest-preset-angular
für Angular-Tests, aber ich brauche auch angular-mocks
für AngularJS-Tests.Jest und hybride Angular/AngularJS-Anwendung
Das Problem ist, wenn ich beide jest-preset-angular
und angular-mocks
in setupJest.ts
importieren, alle Tests (Winkel- und AngularJS) nicht mit Cannot read property '$injector' of null
Fehler (von angular-mocks
kommt).
Wenn ich nur jest-preset-angular
importieren alle Angular-Tests bestanden, wenn ich nur angular-mocks
importieren alle AngularJS Tests bestehen.
Wie kann ich es zusammenarbeiten lassen?
package.json:
"jest": {
"preset": "jest-preset-angular",
"setupTestFrameworkScriptFile": "<rootDir>/src/setupJest.ts"
}
setupJest.ts:
import 'jest-preset-angular';
import 'angular';
import 'angular-mocks';
const mock =() => {
let storage = {};
return {
getItem: key => key in storage ? storage[key] : null,
setItem: (key, value) => storage[key] = value || '',
removeItem: key => delete storage[key],
clear:() => storage = {},
};
};
Object.defineProperty(window, 'localStorage', {value: mock()});
Object.defineProperty(window, 'sessionStorage', {value: mock()});
Object.defineProperty(window, 'getComputedStyle', {
value:() => ['-webkit-appearance']
});