2016-10-14 9 views
0

サードパーティのアドオン/ライブラリの子コンポーネントを持つコンポーネントがいくつかあります。私は単体テストのためにJestを使用し、方法はです。 jest.unmock('ChildComponet.js')の子コンポーネントを除外しようとしましたが、このエラーが発生します。スナップショットと一致するJestに反応し、子コンポーネントでコンポーネントをテストするとクラッシュする

jest.unmock( 'ChildComponet.js')は呼び出されましたが、automockingは無効です。不要な電話をjest.unmockに移動するか、jest.enableAutomock();で自動テストを有効にしてください。未定義

の「DEFINE_MANY」プロパティを読み取ることができません:

はTypeError:この警告は、私がjest.enableAutomock();を有効にして、今私はTISのエラーを持っている可能性が冗談15で、デフォルトの設定の変更

の結果であり、私は私のpackage.jsonでこれを置くが、何も起こりません:

"unmockedModulePathPatterns":[ "ROOTDIR/node_modules /反応する"]

アイデアをお探しですか?

は、Reactのコンポーネントの単体テストを行う正しい方法ですか?あなたの前

jest.mock('component',()=> 'ComponentName') 

テストしたいモジュールのimport文:

答えて

1

モックする最も簡単な方法は、私がこれまでに見つかった使用することであるコンポーネントを反応させます。

最初のパラメータは、グローバルnpmモジュールの名前またはローカルコンポーネントへのパスです(テストファイルを基準にしたパスに注意してください)。 2番目のパラメータは、文字列を返す関数です(私はいつもjsxで使用するのと同じ名前を返します)。これにより、元のコンポーネントと同じ名前を持つダンプコンポーネントが生成されます。あなたのスナップショットでは違いは見られません。模擬コンポーネントは子をレンダリングしません。

エラーメッセージが表示されます。

jest.unmock('ChildComponet.js') was called but automocking is disabled...

問題は、あなたがjest.unmock代わりのjest.mockを使用することです。 Jestには、モジュールのすべての依存関係を自動的に模擬する機能があります。オートモックを有効にすると、jest.unmockを使って、ロダッシュや瞬間のようないくつかの本質的なライブラリの実際の移植を得ることができます。オートモック機能は多くの人にとって混乱していたため、オプションとして使用することにしました。 Tldrはあなたがオートモックを有効にしていないので、最初に嘲笑されなかったものをモックを外そうとしました。

TypeError: Cannot read property 'DEFINE_MANY' of undefined

オートモックを有効にすると、インポートされたモジュールはすべてundefinedに置き換えられます。私はunmockedModulePathPatterns設定について多くのことを言うことはできませんが、私はあなたがモジュールをインポートするために使用するのと同じパターンを使用する必要があると信じていますので、グローバルな場合は、node_modulesフォルダへのパスを入れる必要はありません。

+0

ありがとうございました。私はそれをテストする。 –

関連する問題