0
난 그냥 래핑 된 구성 요소에 대한 테스트를 수행하는 방법을 알아 내려고 노력하고 있습니다. 구성 요소에 redux state prop를 올바르게 정의하려면 어떻게해야합니까?Jest Redux 테스트 문제
연결과 PendingContract ●/돌아 오는> +++ 연결된 (SMART) 구성 요소를 렌더링
TypeError: Cannot read property 'find' of undefined
원본 구성 요소 코드 :
// Dependencies
import React, { Component } from 'react';
import CSSModules from 'react-css-modules';
import { connect } from 'react-redux';
import * as actions from '../../../../actions';
import PendingContractDetail from './pending-contract-
detail/PendingContractDetail';
// CSS
import styles from './PendingContract.css';
export class PendingContract extends Component {
componentWillMount() {
this.props.getSinglePendingContract(this.props.params.contract);
}
render() {
let contract;
if (this.props.contract) {
const contractDetails = this.props.contract;
contract = (
<PendingContractDetail
accepted={contractDetails.accepted}
contractId={contractDetails.contractId}
contractName={contractDetails.contractName}
details={contractDetails.details}
status={contractDetails.status}
timeCreated={contractDetails.timeCreated}
type={contractDetails.type} />
);
} else {
contract = 'Loading...'
};
return (
<div className='row'>
<div className='col-xs-12 col-sm-12 col-md-12'>
{contract}
</div>
</div>
);
}
}
function mapStateToProps(state) {
return {
contract: state.pendingContracts.contract
}
}
const PendingContractWithCSS = CSSModules(PendingContract, styles);
export default connect(mapStateToProps, actions)(PendingContractWithCSS);
테스트 코드를 다음과 같이
import React from 'react';
import reduxThunk from 'redux-thunk';
import { Provider } from 'react-redux';
import { shallow, mount } from 'enzyme';
import PendingContract from './PendingContract';
import configureStore from 'redux-mock-store';
jest.mock('react-css-modules',() => Component => Component);
describe('PendingContract with connect/Redux',() => {
const initialState = {
contract: {
accepted: true,
contractId: 1234,
contractName: 'Test Contract',
details: { test: 'test'},
status: 'Accepted',
type: 'Sports'
}
};
const mockStore = configureStore([reduxThunk])
let store,wrapper;
beforeEach(()=>{
store = mockStore(initialState)
wrapper = mount(<Provider store={store}><PendingContract {...initialState} /></Provider>)
})
it('+++ render the connected(SMART) component',() => {
expect(wrapper.find(PendingContract).length).toEqual(1)
});
// it('+++ check Prop matches with initialState',() => {
// expect(wrapper.find(PendingContract).prop('contract')).toEqual(initialState.contract)
// });
});
나는 그것을 조정하는 경우에도 :에서 수입 PendingContract './PendingContract'; 같은 오류가 발생했습니다. – Tulun
테스트 케이스 안에 wrapper를 console.log하고 포함 된 내용을 게시 할 수 있습니까? – Shota
결과를 로깅하는 데 문제가 있습니다. 테스트에 영향을 미치지 않습니다 (이 프로젝트의 상용구로 create-react-app 사용) – Tulun