2017-12-31 103 views
0

ハイブリッドアプリケーション(角型+角度型)をテストするのにjestを使用することを検討しています。 Angularテストにはjest-preset-angularを使用していますが、AngularJSテストにはangular-mocksも必要です。ジストとハイブリッド角型/角度型アプリケーション

問題は、私はsetupJest.tsjest-preset-angularangular-mocksの両方をインポートすると、すべてのテスト(角とAngularJS)がCannot read property '$injector' of nullエラー(angular-mocksから来る)で失敗しています。

私がちょうど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前に修正問題のインポート
関連する問題