2016-12-01 5 views
4

テストしようとしているコンポーネントがRequireJSモジュールに依存しているため、実行に失敗したJestテストスイートがあります。ここで私が見ているエラーがあります:RequireJSの依存関係を持つes6モジュールをテストするときにJestの定義が定義されていません

FAIL __tests__/components/MyComponent.test.js 
    ● Test suite failed to run 

    ReferenceError: define is not defined 

     at Object.<anonymous> (node_modules/private-npm-module/utils.js:1:90) 

コンポーネントは、次のインポートがあります

import utils from 'private-npm-module'; 

そしてprivate-npm-moduleはそうのように設定されている:MyComponentがでtranspiledされている場合

define('utils', [], function() { 
    return {}; 
}); 

ブラウザで実行すると、依存関係は正しく動作します。この問題は単体テストにのみ影響します。 RequireJSの依存関係を持つコンポーネントでテストスイートを実行するにはどうすればよいですか?

package.jsonのjest configのscriptPreprocessorとしてbabel-jestを使用しています。私はjest v0.15.1を使用しています。

答えて

3

したがって、RequireJSはJestではサポートされていません。私の特定のケースでは、それはMyComponent.test.jsの上部に私の依存関係を模擬するのが最も簡単かつ最も適切であった:

jest.mock('private-npm-module',() => { 
    // mock implementation 
}) 

import MyComponent from '../../components/MyComponent'; 

この方法で、MyComponentがロードされ、それをロードしようとしませんので、その依存性はすでに、嘲笑されますRequireJSモジュール

実際にテスト用にRequireJSモジュールをロードする必要がある場合は、jest's transform configurationを使用してRequireJSからES6への変換をラップすることができます。

関連する問題