相关疑难解决方法(0)

如何在笑话和酶中为 useState Hook 设置初始状态?

目前我使用带有反应钩子的功能组件。但我无法useState完全测试钩子。考虑这样一个场景,在useEffect钩子中,我正在执行 API 调用并在useState. 对于玩笑/酶,我模拟了要测试的数据,但我无法useState在玩笑中设置初始状态值。

const [state, setState] = useState([]);

我想在玩笑中将初始状态设置为对象数组。我找不到任何类似于类组件的 setState 函数。

javascript reactjs enzyme react-hooks react-hooks-testing-library

28
推荐指数
6
解决办法
6万
查看次数

如何模拟 useState 钩子实现,以便它在测试期间实际更改状态

我正在尝试测试一个组件,该组件在其内部状态从 false 变为 true 时呈现两个不同的子组件:当它为 false 时,它​​呈现一个按钮,如果按下该按钮,则将状态从 false 更改为 true 并呈现另一个。另一种是在提交时执行相反操作的表单。

我试图监视 useState 钩子以测试它是否被实际调用。但是通过模拟模块,当我在测试的第二部分需要它来测试之后呈现的表单时,实际的 setState 将不起作用。

这是我的组件:

import React, { useState } from 'react';

const MyComponent = ({handleChange, handleInput}) => {
     const [state, setState] = useState(false);

     return (
       <div>
         {!state
           ? (
             <button
               data-test="button1"
               type="button"
               onClick={() => setState(true)}
             >
               RenderForm
             </button>
           )
           : (
             <form onSubmit={() => setState(false)}>
               <input type="text" onChange={e => handleChange(e)} />
               <button type="submit">
                 Submit Form
               </button>
               <button type="button" onClick={() => setState(false)}>
                 Go Back
               </button>
             </form>
           )
         } …
Run Code Online (Sandbox Code Playgroud)

javascript reactjs jestjs enzyme

2
推荐指数
1
解决办法
2万
查看次数