2017-12-31 38 views
0

내 하이브리드 응용 프로그램 (Angular + AngularJS) 테스트에 jest을 사용하려고합니다. Angular 테스트에는 jest-preset-angular을 사용하고 있지만 AngularJS 테스트에는 angular-mocks도 필요합니다. 나는 모두 jest-preset-angularsetupJest.ts에서 angular-mocks, 모든 (각도 및 AngularJS와) 테스트 (angular-mocks에서 오는) Cannot read property '$injector' of null 오류와 함께 실패를 가져올 때 Jest와 Hybrid Angular/AngularJS 응용 프로그램

문제

입니다.

jest-preset-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'] 
}); 

답변

0

그것은 순서가 중요한 것으로 나타났다.

import 'angular'; 
import 'angular-mocks'; 
import 'jest-preset-angular'; 
:
angular-mocks jest-preset-angular 전에 수정 문제를 가져 오기
관련 문제