Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/reactjs/23.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Reactjs 如何在setState回调参数中测试所有这些逻辑_Reactjs_Jestjs_React Testing Library - Fatal编程技术网

Reactjs 如何在setState回调参数中测试所有这些逻辑

Reactjs 如何在setState回调参数中测试所有这些逻辑,reactjs,jestjs,react-testing-library,Reactjs,Jestjs,React Testing Library,我正在尝试测试以下代码。我正在使用jest和react测试库。这是我第一次用这种状态。我解决了我的初始问题,这是为了避免传递当前状态的依赖关系,但我不确定如何测试它。有人能给我建议吗 useEffect(() => { setUsers(currentUsers => { if(currentUsers === undefined) { return userDataFromApi; } else {

我正在尝试测试以下代码。我正在使用jest和react测试库。这是我第一次用这种状态。我解决了我的初始问题,这是为了避免传递当前状态的依赖关系,但我不确定如何测试它。有人能给我建议吗

useEffect(() => {
    setUsers(currentUsers => {
        if(currentUsers === undefined) {
            return userDataFromApi;
        } else {
            //Users already exist in state
            const mergedUserData = currentUsers.map(existingUser => {
                const matchedUser = userDataFromApi.find(user => user.name === existingUser.name);

                if (matchedUser) {
                    existingUser.stats = user.stats;
                }

                return existingUser;
            });

            return mergedUserData;
        }
    });
}, [setUsers, userDataFromApi]);

这段代码是实现细节。React测试库强制执行UI测试。你可以阅读

在您的测试中,您可以执行与用户相同的操作(填写表单、单击等),然后检查用户应该看到或不应该看到的内容(可能是他的姓名、统计信息等)


如果您从后端获取数据,并且只想测试前端,您可以模拟后端的答案。

是的,我已经在UI中尽了我所能,但jest test coverage指出需要覆盖这些行。由于这些线,我的组件覆盖率下降了10%