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';