Я пытаюсь проверить, изменяется ли хранилище редуксов на пустой массив, проверяя реквизиты в контейнере при отправке и действии на componentWillUnMount.
Итак, я имею в виду, протестируйте изменение ["foo", "bar"] с моего редукторного редуктора на пустой массив []
.
Мой код выглядит следующим образом:
Контейнер:
import React, { Component } from 'react';
import { connect } from 'react-redux';
import * as actions from '../../store/actions/actions';
class MyComponent extends Component{
componentWillUnmount(){
this.props.cleanSearch();
}
render(){
return(
<div>
Whatever
</div>
)
}
}
const mapStateToProps = state=>{
const itemsSearched = state.itemsSearched;
return{
itemsSearched
}
}
const mapDispatchToProps = dispatch =>{
return{
cleanSearch: ()=> dispatch(actions.cleanSearch())
}
}
export default connect(mapStateToProps, mapDispatchToProps)(MyComponent);
Мой редуктор:
import {
CLEAN_SEARCH
} from '../actions/types';
import * as utils from '../../utils/udpaterState';
const initialState = {
itemsSearched: ["foo", "bar"]
}
const reducer= (prevState = initialState, action)=>{
let newState = null;
switch(action.type){
case CLEAN_SEARCH:
newState = {itemsSearched: []}
return utils.updaterState(prevState, newState);
default:
return prevState;
}
}
export default reducer;
И мой тестовый код выглядит так:
MyComponent.test.js
it('cleans redux prop searches when componentWillUnMount is called', ()=>{
const spy = jest.spyOn(MyComponent.prototype, 'componentWillUnmount');
const wrapper = mount(<MyComponent store={storeUtil} itemsSearched={mocks.itemsSearched()} />);
expect(wrapper.props().itemsSearched).toEqual(mocks.itemsSearched());
wrapper.instance().componentWillUnmount();
expect(wrapper.props().itemsSearched).toEqual([]);
})
Однако я получаю массив ["foo", "bar"] вместо пустого ожидаемого.