Warning: file_get_contents(/data/phpspider/zhask/data//catemap/1/angular/26.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Jest和混合Angular/AngularJS应用程序_Angularjs_Angular_Unit Testing_Typescript_Jestjs - Fatal编程技术网

Jest和混合Angular/AngularJS应用程序

Jest和混合Angular/AngularJS应用程序,angularjs,angular,unit-testing,typescript,jestjs,Angularjs,Angular,Unit Testing,Typescript,Jestjs,我正在考虑使用jest来测试我的混合应用程序(Angular+AngularJS)。我正在使用jest-preset-angular进行角度测试,但我还需要AngularJS测试的角度模拟 问题是,当我在setupJest.ts中导入jest预设角度和angularmock时,所有测试(角度和角度JS)都失败,并且无法读取null的属性“$injector”错误(来自angularmock) 如果我只导入jest预设角度所有角度测试都通过,如果我只导入角度模拟所有AngularJS测试都通过 我

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

问题是,当我在
setupJest.ts
中导入
jest预设角度
angularmock
时,所有测试(角度和角度JS)都失败,并且
无法读取null的属性“$injector”
错误(来自
angularmock

如果我只导入
jest预设角度
所有角度测试都通过,如果我只导入
角度模拟
所有AngularJS测试都通过

我如何让它一起工作

package.json:

"jest": {
    "preset": "jest-preset-angular",
    "setupTestFrameworkScriptFile": "<rootDir>/src/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']
});

结果证明顺序很重要。
jest preset angular
之前导入
angular mock
,解决了以下问题:

import 'angular';
import 'angular-mocks';
import 'jest-preset-angular';