【发布时间】:2020-11-02 14:25:58
【问题描述】:
我有以下组件-PLoad.js:
import React, { useEffect } from 'react';
import { connect } from 'react-redux';
import Spinner from '../../../components/UI/Spinner/Spinner';
import { getLoad } from '../../../store/actions/poe';
import Load from '../../../components/apps/P/Load';
const PLoad = ({ dispatchGetLoad, loadD, loading }) => {
return (loading ? <Spinner /> :
<div>
<Load loadD={loadD} />
</div>
);
}
const mapStateToProps = state => ({
loadD: state.p.loadD,
loading: state.p.loading
});
const mapDispatchToProps = dispatch => ({
dispatchGetLoad: () => dispatch(getLoad())
});
export default connect(mapStateToProps, mapDispatchToProps)(PLoad);
我正在尝试使用 Jest+Enzyme -- PLoad.test.js 测试这个组件
import React from 'react';
import { shallow, mount } from 'enzyme';
import { Provider } from 'react-redux';
import PLoad from '../PLoad';
import store from '../../../../store';
import Load from '../../../../components/apps/P/Load';
import Spinner from '.././../../../components/UI/Spinner/Spinner';
describe('PLoad component', () => {
let wrapper;
beforeAll(() => {
wrapper = mount(
<Provider store={store}>
<PLoad />
</Provider>);
});
it('should render the Load and Spinner components', () => {
expect(wrapper.find(Spinner)).toHaveLength(1); //this is passed
expect(wrapper.find(Load)).toHaveLength(1); //ended in error
});
});
注意:- 上面 PLoad.test.js 中使用的 store.js 是我的应用程序使用的实际 store.js。 我想测试加载:false 时,PLoad 呈现 LoadD,当它为 true 时呈现 Spinner。 加载来自 redux 存储的状态。有可能吗?
【问题讨论】:
标签: reactjs react-redux jestjs enzyme