Я тестирую компонент, и мне нужно проверить методы, которые он должен обновлять. Эти методы обновляют состояние, и у меня возникают проблемы с тестированием этих изменений состояния.
Мой тест выглядит следующим образом:
it('componentDidMount() test', () => {
const loancont = shallow(<LoanFilesContainer store={store} searchText='testing' firstUpdate={false} uploadingExcel={true}/>)
const prewrap = mount(loancont.get(0))
const loancontwrap = prewrap.find('LoanFilesContainer')
const wrapper = mount(loancontwrap.get(0))
expect(wrapper.state('firstUpdate')).toEqual(false)
wrapper.instance().state.uploadingExcel = true
wrapper.instance().componentWillUpdate()
wrapper.update()
expect(wrapper.state('firstUpdate')).toEqual(true)
})
Мой код выглядит следующим образом:
class LoanFilesContainer extends Component {
state = {
searchText: '',
isBulkCreating: false,
loansToConvert: [],
uploadingExcel: false,
firstUpdate: false
}
componentDidMount() {
this.props.fees.filter({ limit: 0 })
}
componentWillUpdate() {
const { uploadingExcel, firstUpdate } = this.state
if(uploadingExcel && !firstUpdate) { this.setState({ firstUpdate: true }) }
if(uploadingExcel && firstUpdate) { this.setState({ uploadingExcel: false, firstUpdate: false }) }
}
render() {
const { ...props } = this.props
const {
searchText,
isBulkCreating,
loansToConvert,
uploadingExcel
} = this.state
return (
<main className="main">
{props.loans.data && (
<LoanFiles
data-test="input"
{...props}
handleCSV={this.handleCSV}
searchText={searchText}
onFieldChange={this.onFieldChange}
onSearchSubmit={this.onSearchSubmit}
onOrderAll={this.onOrderAll}
uploadRef={this.uploadRef}
/>
)}
{(props.loans.isLoading || !props.loans.data || props.orderAdd.isLoading || props.upload1003.isLoading) && <Loader/>}
{isBulkCreating ? <BulkLoader title='Creating Orders In Bulk...' /> : null}
{uploadingExcel && <BulkLoader title='Uploading Loan Data...' />}
{!isBulkCreating && loansToConvert.length > 0 ? <ChainedCreateOrderModal loans={
loansToConvert
} onFinish={this.onChainedOrderCreationFinish} /> : null}
</main>
)
}
}
Состояние firstUpdate должно измениться на true в зависимости от оператора if, проверяющего состояние uploadingExcel и firstUpdate. Однако он возвращает false даже после обновления.