Ферменты setStat не копируют данные - PullRequest
0 голосов
/ 01 июля 2019

Я пытаюсь проверить свою форму, установив в форме состояние и отправив его. По какой-то причине, когда я вызываю функцию wrapper.setState, она не устанавливает состояние моего фактического компонента.

Журнал консоли wrapper.instance возвращает объект с корректным смоделированным состоянием. Таким образом, состояние оболочки кажется правильным, однако, когда я фактически отправляю форму на сам компонент, смоделированное состояние не переносится. Я не понимаю почему.

Мой тест

  it("should dispatch a register action on form submit", () => {
        let mock_user = { user: {
            firstName: 'mockFN',
            lastName: 'mockLN',
            userName: 'mockUN',
            password: 'mockPW'
        } };
        userActions_spy = jest.spyOn(userActions, 'register');
        wrapper = mount(<Router><Register {...props} /></Router>);      
        wrapper.setState(mock_user, () => {
            console.log("Wrapper", wrapper.instance());
            wrapper.find('#register').simulate('submit'); 
            expect(userActions_spy).toHaveBeenCalled();
        });
    });

Мой компонент - эта функция вызывается, когда пользователь отправляет форму. Журнал консоли здесь возвращает исходное состояние вместо моего смоделированного состояния, поэтому код не входит в логику оператора if.

submitForm = (e) => {
        e.preventDefault();

        const { user } = this.state;
        const { dispatch } = this.props;
        console.log("USER", this.state);
        if (user.firstName && user.lastName && user.userName && user.password) {
            this.props.dispatch(userActions.register(user));
            if(this.props.error === "") {
                this.props.history.push("/login");  
            }
        } else {
            this.props.dispatch(userActions.error("Form Incomplete"));
        }

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