【发布时间】:2021-05-15 18:13:34
【问题描述】:
我快瞎了,真的。 谁能告诉我为什么浅层在这种情况下不起作用以及如何解决
我总是得到错误:找不到 react-redux 上下文值;请确保组件包装在 Provider 中
import React from 'react';
import Adapter from 'enzyme-adapter-react-16';
import Enzyme, { shallow, mount, render } from 'enzyme';
Enzyme.configure({ adapter: new Adapter() });
import { Box } from 'grommet';
// components
import Sidebar from '../Sidebar';
// import SidebarButton from '../Sidebar';
describe('<Sidebar />', () => {
const wrapper = shallow(<Sidebar />);
it('should work', () => {
expect(wrapper.find(Box).length).toBe(1);
});
});
我总是得到错误:找不到 react-redux 上下文值;请确保组件包装在 Provider 中
import React from 'react';
import styled from 'styled-components';
import { Box, Button, Sidebar as SB, Nav, Text, Collapsible } from 'grommet';
import { Link } from 'react-router-dom';
import { USERS, ORGS, ORDERS } from '../app/Routes';
import { Menu, Home, User, Group } from 'grommet-icons';
import { toggleSidebar } from '../features/SidebarSlice';
import { useDispatch, useSelector } from 'react-redux';
/**
* Renders static sidebar for all pages
*/
export default function Sidebar() {
const dispatch = useDispatch();
const { sidebarOrgs } = useSelector((state) => state.sidebarDataSlice);
const { isAdmin } = useSelector((state) => state.loginDataSlice);
return (
<Box>
<SB round='small'>
<Nav gap='small'>
<SidebarButton
icon={<Menu />}
label='Menu'
onClick={() => dispatch(toggleSidebar())}
/>
{/* Organizations icons */}
{sidebarOrgs.map(({ id, layer, name }) => (
<Box key={id}>
<SidebarButton
icon={
layer !== 'Central' ? (
<img src={`./${layer}.svg`} alt={name} />
):(
<Home className="homeIcon" />
)
}
label={`${layer}: ${name}`}
route={ORDERS}
layer={layer}
/>
</Box>
))}
</Nav>
</SB>
</Box>
);
}
【问题讨论】:
标签: reactjs testing enzyme provider