Jest和混合Angular / AngularJS应用程序

问题描述 投票:2回答:1

我正在考虑使用jest来测试我的混合应用程序(Angular + AngularJS)。我正在使用jest-preset-angular进行角度测试,但我还需要angular-mocks进行AngularJS测试。

问题是当我在jest-preset-angular中导入angular-mockssetupJest.ts时,所有测试(Angular和AngularJS)都会因Cannot read property '$injector' of null错误(来自angular-mocks)而失败。

如果我只导入jest-preset-angular所有Angular测试都通过,如果我只导入angular-mocks,所有AngularJS测试都通过。

我如何让它一起工作?

的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']
});
angularjs angular unit-testing typescript jestjs
1个回答
1
投票

事实证明,订单很重要。 在angular-mocks之前导入jest-preset-angular解决了这个问题:

import 'angular';
import 'angular-mocks';
import 'jest-preset-angular';
© www.soinside.com 2019 - 2024. All rights reserved.