Как вы тестируете эффект «попробуйте / поймайте»? - PullRequest
0 голосов
/ 27 сентября 2019

поэтому у меня есть это

    useEffect(() => {
        try {
            if (prop1 && prop2) {
                callThisFunction()
            } else {
                callThatFunction()
            }
        } catch (error) {
            console.log(error, 'the err:')
            setError(true)
        }
    }, [])

Я хочу попасть в блок catch, чтобы что-то заявить, как я могу это сделать?

В настоящее время я пытался высмеивать реализацию одного из них.из callThis/That функций и выдачи ошибки, чтобы заставить его пойти на улов, но это не сработало

обновлено: также пробовал это:

callThisFunction.mockImplementation(() => {
   throw Error(error)
})

Я долженСуть в том, что он прыгает в остальное, но по какой-то причине он не запрыгивает в ловушку, когда остальное не удается.но код работает.просто не могу пройти тест тоже: /

есть идеи?

Ответы [ 2 ]

0 голосов
/ 27 сентября 2019

Вы можете сделать это как:

export default function Example() {
        const [error, setError] = useState(false)
        async function asyncFetchAPI() {
            let response = null;
            try {
                response = await fetch('api/...')
                setError(false)
                const { prop1, prop2 } = response.data;
                if (prop1 && prop2) {
                    callThisFunction()
                } else {
                    callThatFunction()
                }
            } catch (error) {
                console.error('The err: ', error)
                setError(true)
            }
        }

        useEffect(() => {
            asyncFetchAPI();
        }, []);

        return <div></div>
    }
0 голосов
/ 27 сентября 2019

Вы можете использовать асинхронную функцию:

useEffect(() => {
    (async function() {
        try {
            if (prop1 && prop2) {
                callThisFunction()
            } else {
                callThatFunction()
            }
        } catch (error) {
            console.log(error, 'the err:')
            setError(true)
       }
    })();
}, [])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...