reactjs - mapStateToProps() 中的 Jest + enzyme 测试错误

标签 reactjs redux jestjs enzyme

我在使用 enzyme mount 函数测试 redux 时遇到问题。

错误:未捕获[TypeError:selectors.selectMessages不是函数]

为什么我会收到此错误?

//badgeSelector.js. R - is Ramda.

import { createSelector } from 'reselect'
export const selectMessages = createSelector(R.path(['badgeReducer', 'unreadMessages']), (messages) => messages)

//App.js
import * as selectors from 'commons/selectors/badgeSelector'

export class App extends PureComponent {
    render() {
        return (
            ...
        )
    }
}

export default connect(
        (state) => ({
            messages: selectors.selectMessages(state)
        }),
        (dispatch) => ({
            updateBadge: () => {
                dispatch(updateBadge())
            }
        })
    )(App)
    
//App.test.js

import ConnectedApp, {App} from './App'

describe('Badge react-redux test mount: ', () => {
        const mockStore = configureStore()
        let store, wrapper
        beforeEach(() => {
            store = mockStore(state)
            wrapper = mount(<Provider store={store}><ConnectedApp /></Provider>) //Error when mount
        })

        it('render mount component', () => {
            expect(wrapper.find(ConnectedApp).length).toEqual(1)
        })
    })

最佳答案

已解决:jest 不接受来自 webpack 的别名路径

要修复上述错误,您需要根据需要设置别名:

alias: {
            component: path.resolve(__dirname, './main/component'),
            commons: path.resolve(__dirname, './main/app/src/common')
        }

并正确设置 jest moduleNameMapper:

"moduleNameMapper": {
      "^commons(.*)$": "<rootDir>/main/app/src/common/$1",
      "^component(.*)$": "<rootDir>/main/component/$1"
    }

关于reactjs - mapStateToProps() 中的 Jest + enzyme 测试错误,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52529984/

相关文章:

javascript - react ES5 : Pass a function to another function resulted in "not a function" error

Javascript 模块导入失败 - 为什么?

css - Codepen 上的 ReactJS 示例中的这些样式来自哪里?

javascript - Jest 和 enzyme 有什么区别?

node.js - 如果 AWS Lambda 本地调用,如何在 Jest 测试中传递正确的 JSON 事件

javascript - 处理 React 事件 "the React way": supply the event vs. 将结果提供给回调

Redux Observable : How to use action. 有效载荷在链的后半部分?

javascript - React.js - 如何在另一个方法完全执行后调用一个方法

javascript - Redux 存储双重嵌套

unit-testing - 如何在 React Jest 测试中获取 "mock"navigator.geolocation