2016-09-28 15 views
0

コンポーネントをスナップショットテストするとき、Reduxにあるアクション、状態、または接続機能ではなく、コンポーネント自体をテストしたいだけです。これは、他の場所でこれらの関数のテストがあるためです。JestスナップショットテストReduxとカバレッジ

これは、すべての機能をテストすることを期待しているため、コードカバレッジを崩してしまいます。例えば

export const EarningsInfo = ({ close }) => (/* ... */); 

const mapStateToProps = _ => ({}); 

const mapActionsToProps = dispatch => ({ 
    close: _ => dispatch(closeModal()), 
}); 

export default connect(mapStateToProps, mapActionsToProps)(EarningsInfo); 

冗談はあなたがテストすることを期待している

  1. earningsInfo
  2. mapStateToProps
  3. mapActionsToProps
  4. connect

だから、単純な、このようなテストがある場合:あなただけのファイルの25%をテストしている

import { EarningsInfo } from '../components/EarningsInfo'; 

it('renders correctly',() => { 
    const tree = renderer.create(
    <EarningsInfo close={() => null } /> 
).toJSON(); 

    expect(tree).toMatchSnapshot(); 
}); 

コードカバレッジレポートを。これは意図したとおりに動作していると確信しています。

私の質問は、私はmapStateToPropsmapActionsToPropsconnectをテストする必要がないことを私の考えで正しい2倍

  1. アムれます。
  2. カバレッジ目的で関数名を無視する方法はありますか? react-redux自身のテストはすでにこれをカバーするよう
+0

実際にこのhttp://redux.js.org/docs/recipes/WritingTests.html#connected-componentsを見てから、テストはコンポーネント自体ではなく、他の機能でなければならないと思っています。だから本当にJestの関数名を無視する最良の方法は何ですか? –

+0

個人的には、 'EarningsInfo'コンポーネントを(接続されたコンポーネントのデフォルトのエクスポートに加えて)名前付きのエクスポートとしてエクスポートし、生​​の' EarningsInfo'コンポーネントをテストするだけです。次に、物事が適切に結線されていることを確認するために、いくつかの統合テストを行います。 – kentcdodds

答えて

1
  1. connectは、試験すべきではありません。 mapStateToPropsまたはmapActionsToPropsに標準以外の/複雑な/ビジネスロジックがある場合は、テストすることが理にかなっています。

  2. はい、それは少し壊れやすくすることができます - http://blog.dmbcllc.com/es2015-code-coverage-and-jest-react-js-unit-testing/

は、約100%のコードカバレッジを心配重要であるかに焦点を当て、ユニットテストとよく/簡単にテストすることができないでください。

関連する問題