Jest模拟redux-store getState()在模块中使用redux-mock-store

时间:2017-06-12 19:58:47

标签: javascript unit-testing jest redux-store

所以我对redux-store的实现可能不是最好的,而且我对Jest的了解是最小的...

我有三个文件,包括......

  1. 模块
  2. 反应组件
  3. (正常)商店,默认导出
  4. 我的测试文件如下所示:

    // 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的第一篇文章,让我知道如果我应该澄清一切!

1 个答案:

答案 0 :(得分:1)

不要导入商店。我们想模仿商店:

const store = mockStore(initialState);