本文转载自:众成翻译
译者:iOSDevLog
连接:http://www.zcfy.cc/article/3809
原文:https://www.fullstackreact.com/30-days-of-react/day-22/react
测试套件是一项前期投资,可在系统的整个生命周期内得到回报。今天咱们将介绍测试的主题,并讨论咱们能够写的不一样类型的测试。git
好了, 闭上你的眼睛, 等一下, 不要... 你很难闭着眼睛阅读, 可是想象一下, 你的应用正在接近你的第一个部署。github
它愈来愈近, 它变得无聊, 不断添加在您的浏览器运行的功能,。后端
必定还有更好的办法..。数组
当咱们谈论测试时, 咱们讨论的是自动创建和测量咱们的假设的过程, 而不是关于咱们的应用的功能断言。浏览器
当咱们谈论在React中的front-end(先后端) 测试时, 咱们指的是对咱们的Reac应用渲染什么以及它如何响应用户交互的断言过程。dom
咱们将讨论三种不一样的软件测试范例: 单元测试、功能测试和集成测试。函数
单元测试是指测试咱们的代码中的各个部分 (或单元, 所以是名称), 这样咱们就能够确信这些特定的代码部分可以像咱们指望的那样工做。工具
例如, 咱们的应用中已经有一些归并器。这些归并器由一个单一的函数组成, 咱们能够在不一样的场景下进行断言。单元测试
在Reac中, 单元测试一般不须要浏览器, 能够快速运行 (不须要写入 DOM), 断言自己一般是简单而简洁的。
咱们主要集中在回答这个问题: 用一组给定的输入 (状态和属性), 输出是否符合咱们对虚拟 dom 中 应该 的指望。在这种状况下, 咱们正在测试渲染输出。
经过功能测试, 咱们的重点是测试组件的行为。例如, 若是咱们有一个带有用户登陆/注销按钮的导航栏, 咱们能够测试咱们的指望:
给定一个登陆的用户, 导航呈现一个带有文本 Logout 的按钮
因为没有登陆的用户, 导航会呈现一个带有文本 Login 的按钮
功能测试一般是隔离运行的 (即测试组件功能而不须要应用的其他部分)。
最后, 咱们将研究的最后一种测试是集成测试。这种类型的测试测试咱们应用的整个服务, 并尝试复制 end-user(终端用户) 在使用咱们的应用时的体验。
在速度和效率的顺序上, 集成测试很是缓慢, 由于它须要对实时运行的浏览器运行预期, 由于单元和功能测试的运行速度会更快 (尤为是在功能测试针对内存中的虚拟 dom 而不是实际的浏览器呈现的状况下进行测试时)。
当测试响应组件时, 咱们将测试咱们对虚拟 dom 中包含的内容的指望, 以及实际 dom 中反映的内容。
咱们将使用一个名为 jasmine 的测试库来提供可读的测试语言和断言。
至于测试运行, 有一个通常性的辩论围绕哪个测试亚军是最容易/最有效的工做, 主要在mocha 和 jest。
咱们要在React中使用在咱们的冒险测试Jest, 由于它是 官方 (将信将疑) 测试员。咱们将要写的大部分代码将是在Jasmine。能够随意使用mocha 若是它是你的测试库的选择。
最后, 咱们将使用一个咱们不能离开的库:Enzyme, 这使得在功能测试的更有乐趣。Enzyme提供了一些至关不错的Reac测试实用功能, 使咱们的断言写得很容易。
明天, 咱们将获得咱们的应用设置与测试工具就位, 以便咱们能够开始测试咱们的应用, 并有信心它的工做是按咱们预期的。明天见!