【问题标题】:Set state of redux connected react component using enzyme使用酶设置 redux 连接反应组件的状态
【发布时间】:2020-10-11 23:35:29
【问题描述】:
import configureMockStore from 'redux-mock-store';
import NavBar from '../components/NavBar/NavBar';

const mockStore = configureMockStore(middlewares);
const store = mockStore(initialState);

wrapper = mount(
    <BrowserRouter> 
        <Provider store={store}>
            <NavBar {...props} />
        </Provider>
    </BrowserRouter> 
);

如何更新包装器中存在的 NavBar 组件的状态?

我尝试使用wrapper.setState({displayMenu:true}) 进行更新,但它没有更新,因为我认为 wrapper 是组件与 Provider 的包装,所以 NavBar 的状态没有更新。

【问题讨论】:

标签: reactjs testing redux enzyme redux-mock-store


【解决方案1】:

要解决这个问题,可以这样写:

import ConnectedNavBar, { NavBar } from '../components/NavBar/NavBar';

const wrapper = mount(
    <Provider store={store}>
        <ConnectedNavBar/>
    </Provider>
);

const navBarInstance = result.find(NavBar).instance() as NavBar;
navBarInstance.setState({displayMenu:true});

获取有关 redax 组件的信息

navBarInstance.props
navBarInstance.state

注意! 注意组件是如何导入的

import ConnectedNavBar, { NavBar } from '../components/NavBar/NavBar';

并且redax组件导出如下:

export class NavBar extends Component<Props, State>{} 
/*...*/
export default connect<StateProps>(mapStateToProps)(NavBar);

希望能解决你的问题

【讨论】:

  • 为了修复测试而从同一个组件导出两次并不是一个好习惯。
猜你喜欢
  • 2017-11-19
  • 1970-01-01
  • 1970-01-01
  • 2018-09-13
  • 2018-05-07
  • 2019-08-10
  • 2017-10-08
  • 2018-01-30
  • 2020-08-11
相关资源
最近更新 更多