состояние обновления в тесте функционального компонента

#reactjs #jestjs #enzyme

#reactjs #jestjs #фермент

Вопрос:

Я пытаюсь протестировать свой функциональный компонент React с помощью Jest, но я столкнулся с проблемой, пытаясь обновить состояние компонента.

Вот мой простой компонент:

 import {FunctionComponent, useEffect, useState} from "react";

import {LoginForm} from './../form/LoginForm';


import {requestConnexion} from "../../effector/UserEffects";

export const Login: FunctionComponent = () => {


    const [error, setError] = useState("");


    useEffect(()=>{
        return requestConnexion.done.watch(({result, params}) => {
            console.log(result.data);
            userConnected(result.data["token"]);

            // @ts-ignore
            addProfileToStore(result.data["userProfile"]);
            console.log("[LOGIN_PAGE] User connected");
            history.push('/');
        })
    })
    useEffect(()=>{
        return requestConnexion.fail.watch(({error, params}) => {
            console.log(params);
            setErrorToState("Bad credentials");
        })
    })

    const setErrorToState = (error:string) => {
        setError(error);
    }


    return (
        <div>
            <LoginForm error={error}/>
        </div>
    )
}

export default Login;
 

Я пытался использовать функцию setState из enzyme, но она работает только с class component ?

Комментарии:

1. можете ли вы дать более подробное объяснение того, что именно терпит неудачу?

2. Состояние задается с помощью requestConnexion, поэтому установите его таким образом, при необходимости смоделируйте его.

3. @lucasreta У меня следующая ошибка: ShallowWrapper::setState() может быть вызван только для компонентов класса