如何解决如何使用 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 举报,一经查实,本站将立刻删除。