Ферментный тест для пустого массива в действии диспетчеризации componentWillUnMount - PullRequest
0 голосов
/ 10 ноября 2018

Я пытаюсь проверить, изменяется ли хранилище редуксов на пустой массив, проверяя реквизиты в контейнере при отправке и действии на 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"] вместо пустого ожидаемого.

1 Ответ

0 голосов
/ 10 ноября 2018

сбивает с толку, потому что у вас есть все заглавные буквы CLASS_CASE и camelCase тоже ... если регистр переключателя не будет cleanSearch, а не регистр CLEAN_SEARCH, потому что вы вызываете его через mapDispatchToProps, вот так:

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 cleanSearch:
            newState = {itemsSearched: []}
            return utils.updaterState(prevState, newState);
        default:
            return prevState;
    }
}


export default reducer;
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...