コンポーネントをスナップショットテストするとき、Reduxにあるアクション、状態、または接続機能ではなく、コンポーネント自体をテストしたいだけです。これは、他の場所でこれらの関数のテストがあるためです。JestスナップショットテストReduxとカバレッジ
これは、すべての機能をテストすることを期待しているため、コードカバレッジを崩してしまいます。例えば
:
export const EarningsInfo = ({ close }) => (/* ... */);
const mapStateToProps = _ => ({});
const mapActionsToProps = dispatch => ({
close: _ => dispatch(closeModal()),
});
export default connect(mapStateToProps, mapActionsToProps)(EarningsInfo);
冗談はあなたがテストすることを期待している
earningsInfo
mapStateToProps
mapActionsToProps
connect
だから、単純な、このようなテストがある場合:あなただけのファイルの25%をテストしている
import { EarningsInfo } from '../components/EarningsInfo';
it('renders correctly',() => {
const tree = renderer.create(
<EarningsInfo close={() => null } />
).toJSON();
expect(tree).toMatchSnapshot();
});
コードカバレッジレポートを。これは意図したとおりに動作していると確信しています。
私の質問は、私はmapStateToProps
、mapActionsToProps
とconnect
をテストする必要がないことを私の考えで正しい2倍
- アムれます。
- カバレッジ目的で関数名を無視する方法はありますか?
react-redux
自身のテストはすでにこれをカバーするよう
実際にこのhttp://redux.js.org/docs/recipes/WritingTests.html#connected-componentsを見てから、テストはコンポーネント自体ではなく、他の機能でなければならないと思っています。だから本当にJestの関数名を無視する最良の方法は何ですか? –
個人的には、 'EarningsInfo'コンポーネントを(接続されたコンポーネントのデフォルトのエクスポートに加えて)名前付きのエクスポートとしてエクスポートし、生の' EarningsInfo'コンポーネントをテストするだけです。次に、物事が適切に結線されていることを確認するために、いくつかの統合テストを行います。 – kentcdodds