搜索
首页web前端css教程测试用酶和反应测试库的反应钩子

测试用酶和反应测试库的反应钩子

用钩子构建强大的反应应用需要严格的测试。本教程演示了如何使用酶和反应测试库有效测试钩子,并利用待办事项应用程序示例。我们将介绍关键的测试方案和最佳实践,以确保无错误的代码。

本指南熟悉开玩笑和反应测试基本面。如果您不熟悉酶,请考虑在进行之前与JEST在React应用程序中的JEST集成。

测试方案

我们的待办事项组件将在这些情况下进行测试:

  1. 组件渲染:验证组件成功渲染。
  2. 初始待办事项显示:确认初始待办事项项目已正确显示。
  3. 添加一个新的工作:测试添加新项目的功能。
  4. 删除待办事项:验证删除待办事项的能力。

这是待办事项组件:

导入React,{usestate,useref}来自“ React”;

const todo =()=> {
  const [todos,settodos] = usestate([
    {id:1,项目:“ fix bugs”},
    {id:2,项目:“取出垃圾”}
  );
  const todoref = useref();
  const removetodo = id => {
    settodos(todos.filter(todo => todo.id!== id));
  };
  const addtodo = data => {
    令ID = todos.length 1;
    settodos([[
      ... todos,
      {
        ID,
        项目:数据
      }
    );
  };
  const handlenewtodo = e => {
    e.preventDefault();
    const item = todoref.current;
    addtodo(item.Value);
    item.value =“”;
  };
  返回 (
    <div classname="container"> {/ *校正的className to className */}
      <div classname="row"> {/ *校正的className to className */}
        <div classname="col-md-6"> {/ *校正的className to className */}
          <h2 id="添加todo">添加todo</h2>
        </div>
      </div>

      <div classname="row"> {/ *校正的className to className */}
        <div classname="col-md-6"> {/ *校正的className to className */}
          <form onsubmit="{handleNewTodo}"> {/ *添加了表格标签 */}
            <input type="text" ref="{todoRef}" data-testid="input"> {/ *添加了数据测验 */}
            <button type="submit" data-testid="add-button">添加任务</button>{/ *添加了数据测验 */}
          </form>
        </div>
      </div>

      <div classname="row todo-list"> {/ *校正的className to className */}
        <div classname="col-md-6"> {/ *校正的className to className */}
          <h3 id="列表">列表</h3>
          {!todos.length? ((
            <div classname="no-task">没有任务!</div>
          ):((
            <ul data-testid="todos"> {/ *添加了数据测验 */}
              {todos.map(todo => {
                返回 (
                  <li key="{todo.id}"> {/ *更正的钥匙值 */}
                    <div>
                      {todo.item}
                      <button data-testid="delete-button" onclick="{()"> removetodo(todo.id)}> x</button> {/ *添加了数据测验和onClick */}
                    </div>
                  </li>
                );
              })}}
            </ul>
          )
        </div>
      </div>
    </div>
  );
};

导出默认todo;

注意: classname属性已纠正到上述代码中的className 。同样,已经添加了data-testid属性,以便使用React测试库更容易测试。

用酶进行测试

  1. 安装: npm install --save-dev enzyme enzyme-adapter-react-16
  2. 酶配置(setUptests.js):
从“酶”进口酶;
从“酶 - 适应器反应16”中进口适配器;
emzyme.configure({Adapter:new Adapter()});
  1. 测试(todo.test.js):
从“反应”中导入反应;
从“酶”导入{浅,山};
从“ ../ todo”导入todo;

描述(“ todo”,()=> {
  它(“ renders”,()=> {
    浅的(<todo></todo> );
  });

  它(“显示初始待办事项”,()=> {
    const包装器=安装(<todo></todo> );
    期待(wrapper.find(“ li”))。
  });

  它(“添加一个新项目”,()=> {
    const包装器=安装(<todo></todo> );
    wrapper.find(“ input”)。instance()。value =“修复失败测试”;
    wrapper.find('[type =“ submit”]')。仿真(“ submit”); //模拟提交,而不是点击
    期待(wrapper.find(“ li”))。
    期待(wrapper.find(“ li”)。last()。text()。tocontain(“修复失败的测试”); //改善断言
  });

  它(“删除项目”,()=> {
    const包装器=安装(<todo></todo> );
    wrapper.find('[data-testid =“ delete-button”]')。first()。仿真(“ click”);
    期待(wrapper.find(“ li”))。
  });
});

用React测试库进行测试

  1. 安装: npm install --save-dev @testing-library/jest-dom @testing-library/react
  2. 测试(todo.test.js):
从“反应”中导入反应;
从“@testing-library/react”中导入{渲染,fireevent,屏幕};
从“ ../ todo”导入todo;
导入“@testing-library/jest-dom”;

描述(“ todo”,()=> {
  它(“显示初始待办事项”,()=> {
    使成为(<todo></todo> );
    期望(screet.getByTestId(“ todos”)。儿童。lengtth).tobe(2);
  });

  (“添加一个新的to-do”,()=> {
    使成为(<todo></todo> );
    fireevent.change(screen.getByTestId(“ input”),{target:{value:“ new Task”});
    fireevent.click(screen.getByTestId(“ add-button”));
    期待(screet.getByTestId(“ todos”)。儿童。长度).tobe(3);
  });

  它(“删除to-do”,()=> {
    使成为(<todo></todo> );
    fireevent.click(screet.getAllByTestId(“ delete-button”)[0]);
    期待(screet.getByTestId(“ todos”)。儿童。
  });
});

请记住,根据需要调整项目结构的文件路径。此改进的版本提供了更健壮和可维护的测试。使用data-testid使测试对组件结构的变化更具弹性。

以上是测试用酶和反应测试库的反应钩子的详细内容。更多信息请关注PHP中文网其他相关文章!

声明
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系admin@php.cn
两个图像和一个API:我们重新着色产品所需的一切两个图像和一个API:我们重新着色产品所需的一切Apr 15, 2025 am 11:27 AM

我最近找到了一种动态更新任何产品图像的颜色的解决方案。因此,只有一种产品之一,我们可以以不同的方式对其进行着色以显示

每周平台新闻:第三方代码,被动混合内容,连接最慢的国家的影响每周平台新闻:第三方代码,被动混合内容,连接最慢的国家的影响Apr 15, 2025 am 11:19 AM

在本周的综述中,灯塔在第三方脚本上阐明了灯光,不安全的资源将在安全站点上被阻止,许多国家连接速度

托管您自己的非JavaScript分析的选项托管您自己的非JavaScript分析的选项Apr 15, 2025 am 11:09 AM

有很多分析平台可帮助您跟踪网站上的访问者和使用数据。也许最著名的是Google Analytics(广泛使用)

它全部都在头上:管理带有React头盔的React Power Site的文档头它全部都在头上:管理带有React头盔的React Power Site的文档头Apr 15, 2025 am 11:01 AM

文档负责人可能不是网站上最迷人的部分,但是其中所处的内容对于您的网站的成功也一样重要

JavaScript中的Super()是什么?JavaScript中的Super()是什么?Apr 15, 2025 am 10:59 AM

当您看到一些称为super()的JavaScript时,在子类中,您会使用super()调用其父母的构造函数和超级。访问它的

比较不同类型的本机JavaScript弹出窗口比较不同类型的本机JavaScript弹出窗口Apr 15, 2025 am 10:48 AM

JavaScript具有各种内置弹出API,它们显示用于用户交互的特殊UI。著名:

为什么可访问的网站如此难以构建?为什么可访问的网站如此难以构建?Apr 15, 2025 am 10:45 AM

前几天,我与一些前端人们聊天,讲述了为什么这么多公司努力创建可访问的网站。为什么可访问的网站如此艰难

'隐藏”属性显然很弱'隐藏”属性显然很弱Apr 15, 2025 am 10:43 AM

有一个HTML属性,它可以正是您认为应该做的:

See all articles

热AI工具

Undresser.AI Undress

Undresser.AI Undress

人工智能驱动的应用程序,用于创建逼真的裸体照片

AI Clothes Remover

AI Clothes Remover

用于从照片中去除衣服的在线人工智能工具。

Undress AI Tool

Undress AI Tool

免费脱衣服图片

Clothoff.io

Clothoff.io

AI脱衣机

AI Hentai Generator

AI Hentai Generator

免费生成ai无尽的。

热门文章

R.E.P.O.能量晶体解释及其做什么(黄色晶体)
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.最佳图形设置
4 周前By尊渡假赌尊渡假赌尊渡假赌
R.E.P.O.如果您听不到任何人,如何修复音频
4 周前By尊渡假赌尊渡假赌尊渡假赌
WWE 2K25:如何解锁Myrise中的所有内容
1 个月前By尊渡假赌尊渡假赌尊渡假赌

热工具

SublimeText3 Linux新版

SublimeText3 Linux新版

SublimeText3 Linux最新版

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

适用于 Eclipse 的 SAP NetWeaver 服务器适配器

将Eclipse与SAP NetWeaver应用服务器集成。

VSCode Windows 64位 下载

VSCode Windows 64位 下载

微软推出的免费、功能强大的一款IDE编辑器

Dreamweaver Mac版

Dreamweaver Mac版

视觉化网页开发工具

Atom编辑器mac版下载

Atom编辑器mac版下载

最流行的的开源编辑器