web-dev-qa-db-ja.com

redux-mock-storeのモジュールで使用されるJestモックredux-storegetState()

そのため、redux-storeの実装は最善ではない可能性があり、Jestに関する私の知識は最小限です。

私は3つのファイルを持っています...

  1. モジュール
  2. A Reactコンポーネント
  3. デフォルトとしてエクスポートされた(通常の)ストア

私のテストファイルは次のようになります。

_// file.test.js


jest.mock( 'store', () => jest.fn() )

// external
import React from 'react'
import configureStore from 'redux-mock-store'

// internal
import Component from 'components/Component'
import store from 'store'

describe( 'Test My Component', () => {
    const mockStore = configureStore()

    it ( 'should equal true', () => {
        const initialState = { active: true }

        store.mockImplementation(() => mockStore( initialState ))

        expect( store.getState().active ).toBe( true )
    } )
} );
_

ストアをモックしている理由は、_<Component />_内で、同じstoreをインポートし、store.getState()を使用するいくつかの関数を保持するモジュールを使用しているためです。 。

つまり、これが返すのは

_TypeError: _store2.default.getState is not a function_

代わりに、モジュール呼び出し(_<Component />_で使用されます)をモックすることでこれを回避しましたが、試したい初期状態が異なるため、これを実行できるはずです。すべてモジュールに依存しています。

これはSOに関する私の最初の投稿です。何か明確にする必要がある場合は、お知らせください。

8

ストアをインポートしないでください。ストアをモックしたい:

const store = mockStore(initialState);

2
AryanJ-NYC