テストしようとしているコンポーネントがRequireJSモジュールに依存しているため、実行に失敗する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
は次のように設定されます。
define('utils', [], function() {
return {};
});
MyComponent
がbabelでトランスパイルされ、ブラウザーで実行されると、依存関係は正しく機能します。この問題は単体テストにのみ影響します。 RequireJS依存関係のあるコンポーネントでテストスイートを実行するにはどうすればよいですか?
Package.jsonのjest構成でscriptPreprocessor
としてbabel-jest
を使用しています。 jestv0.15.1を使用しています。
したがって、RequireJSはJestではサポートされていません。私の特定のケースでは、MyComponent.test.js
の先頭で依存関係をモックするのが最も簡単で適切でした。
jest.mock('private-npm-module', () => {
// mock implementation
})
import MyComponent from '../../components/MyComponent';
このように、MyComponent
がロードされると、その依存関係はすでにモックされているため、RequireJSモジュールをロードしようとはしません。
テストのために本当にRequireJSモジュールをロードする必要がある場合は、 jestのtransform
configuration を使用して、実装をRequireJSからES6へのコンバーターでラップすることができる場合があります。