2015-12-01 9 views
22

私は、いくつかのテストを書くことを試みているReactコンポーネントを持っています。私はそれを可能な限り単純なテストに分割しました。ReactコンポーネントをJestでユニットテストするときにサブコンポーネントをモックする方法

jest.dontMock('../Overlay.react.js'); 

import React from 'react'; 
import ReactDOM from 'react-dom'; 

var Overlay = require('../Overlay.react.js'); // this is the culprit! 

describe('Overlay',() => { 
    it('should work',() => { 
     expect(true).toEqual(true); 
    }); 
}); 

私がテストしようとしているコンポーネントが必要なときは、そのサブコンポーネントを嘲笑していないようです。 Overlay.react.jsの上部には、私は次のインポートを持っている:

  • SyntaxError: /Users/dev/work/react-prototype/src/components/root/routes/components/subset1/components/Overlay.react.js: /Users/dev/work/react-prototype/src/components/root/routes/components/loadingIndicator/LoadingIndicatorSpin.react.js: /Users/dev/work/react-prototype/src/components/root/routes/components/loadingIndicator/sass/style.sass: Unexpected token ILLEGAL

それは代わりにコンポーネントをあざけるの、それは右下のサブコンポーネントのために起こっているように思える:import LoadingSpinner from 'loadingIndicator/LoadingIndicatorSpin.react';を私のテストを実行しているとき、私は次のエラーを取得しますお尻のファイルとフィットを投げる。私の理解は、あなたがそれをに言わない限り、Jestがすべてを模倣したということではなく、模擬です。

これらのテストを策定して、テスト中にサブコンポーネントがジストを爆発させないようにする正しい方法は何ですか?

+2

少し意見がありますが、私はあなたに前向きに考えています。 jestを使用してこれらのタイプのエラーの多くを取得することになります。さらに、軽微ではないテストを開始するときにパフォーマンスの問題に遭遇することもあります。 jestのopen [issues](https://github.com/facebook/jest/issues/116)を見て、mochaやjasmineを使ってフレームワークをテストするのが良いかどうかを評価してください。 – enjoylife

+0

それ以外の場合は、[this](http://stackoverflow.com/questions/27346687/reactjs-testing-components-containing-components)の質問を参照してください。 – enjoylife

+1

@mattclemens面白いです。私は実際に反応のあるコンポーネントをテストすることについて実際に読んだことがあるので、これがデフォルトです。私はちょっと読んでみる...あなたがリンクしている質問は、あなたがテストしようとしているコンポーネントにサブコンポーネントを渡しているということです。 – Jim

答えて

4

各サブコンポーネントではなく、メインコンポーネントにSASSファイルとLESSファイルとCSSファイルが必要な場合は、コンポーネントを単独でテストする際にこの問題は発生しません。

私が提供したものが気に入らない場合は、この問題報告書に記載されているいくつかの解決策があります。 Issue 334

+1

メインコンポーネントに要求すると、下位レベルのコンポーネントにインポートする必要はなくなりますが、コンポーネントの.jsファイルをスタイリングでグループ化するパターンに従うことはできません。 if(filename.match(/ .sass /)|| filename.match(/。less /)|| filename.match(/ .css /)){ return ''; } 'を私の前処理プロセッサーに渡しましたが、これはsassエラーを過ぎてしまっていますが、単一のコンポーネントのテストを実行するときには(すべてを模擬するのではなく)、すべてのストアとアクションを引き出しているようです。 Jestのアピールはオートロックでしたが、変わったようです... – Jim

+0

さて、私は助けなかったのです。問題をチェックアウトしましたか? –

関連する問題