Logo Questions Linux Laravel Mysql Ubuntu Git Menu
 

Jest + Enzyme testing error in mapStateToProps()

I have a problem when I'm testing redux using enzymes mount function.

Error: Uncaught [TypeError: selectors.selectMessages is not a function]

Why do I get this error ?

//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)
        })
    })
like image 973
Marty Avatar asked Jul 11 '26 20:07

Marty


1 Answers

Solved: jest not accept alias paths from webpack

To fix above bug you need to setup alias if needed:

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

And correctly setup jest moduleNameMapper:

"moduleNameMapper": {
      "^commons(.*)$": "<rootDir>/main/app/src/common/$1",
      "^component(.*)$": "<rootDir>/main/component/$1"
    }
like image 56
Marty Avatar answered Jul 13 '26 14:07

Marty



Donate For Us

If you love us? You can donate to us via Paypal or buy me a coffee so we can maintain and grow! Thank you!