微信公众号搜"智元新知"关注
微信扫一扫可直接关注哦!

如何使用 react-test-renderer 和 hooks 访问 redux 存储状态?

如何解决如何使用 react-test-renderer 和 hooks 访问 redux 存储状态?

我正在尝试使用 JEST/REACT-TEST-RENDERER 测试一个 REACT NATIVE 应用程序并运行一个简单的测试来检查组件是否正确呈现(请参阅下面的测试文件。)

import { useNavigation } from '@react-navigation/native';
import { createTestStore } from 'helpers/test/build-store';
import React,{ useEffect } from 'react';
import { Provider,usedispatch } from 'react-redux';
import { create } from 'react-test-renderer';

import CreateCommunityScreen from '../index';

describe('CreateCommunity screen test suite',() => {
    const navigate = jest.fn();
    const dispatch = jest.fn();

    const store = createTestStore();

    let screen: any;

    beforeEach(() => {
        jest.resetAllMocks();
        (useEffect as jest.Mock).mockImplementation((f: any) => f());
        (useNavigation as jest.Mock).mockReturnValue({ navigate });
        (usedispatch as jest.Mock).mockReturnValue(dispatch);
    });

    it('should render CreateCommunity screen correctly',() => {
        givenScreen();
        thenItRenderProperly();
    });

    function givenScreen() {
        screen = create(
            <Provider store={store}>
                <CreateCommunityScreen />
            </Provider>
        );
    }

    function thenItRenderProperly() {
        expect(screen).toMatchSnapshot();
    }
});

createTestStore 文件是我的真实商店:

import { authReducer } from 'helpers/redux/reducers/auth';
import { modalDonateReducer } from 'helpers/redux/reducers/modalDonate';
import { storiesReducer } from 'helpers/redux/reducers/stories';
import { userReducer } from 'helpers/redux/reducers/user';
import { combineReducers,createStore } from 'redux';

export function createTestStore() {
    const store = createStore(
        combineReducers({
            user: userReducer,auth: authReducer,app: appReducer,modalDonate: modalDonateReducer,stories: storiesReducer,})
    );
    return store;
}

我收到以下错误

TypeError: Cannot read property 'user' of undefined

      104 |     // const store = useStore();
      105 |     const userAddress = useSelector(
    > 106 |         (state: IRootState) => state.user.wallet.address
          |                                      ^
      107 |     );
      108 |     const userCurrency = useSelector(
      109 |         (state: IRootState) => state.user.Metadata.currency

有没有人已经成功地使用 Jest/React-Test-Renderer 测试过 ReactNative/Redux?我研究了许多来源,但到目前为止还没有运气。任何工作示例?我做错了什么?

版权声明:本文内容由互联网用户自发贡献,该文观点与技术仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 dio@foxmail.com 举报,一经查实,本站将立刻删除。