当您构建应用程序时,手动测试非常容易。从编写第一行代码的开始,您一直在执行此操作!为什么?怎么做?考虑一下。您编写一些代码,保存并运行查看结果是什么代码。它可以给您想要的结果吗?非常好!然后成功了。
自动测试使您可以少量测试代码。这意味着您可以在生产前找到问题和错误。如果您第一次部署了应用程序,您就知道您的关注点。它可以正常工作吗?是否有错误?“自动测试可以帮助您更加自信,并让您知道,需要在需要时工作。不可能编写完美的软件。但是,最好不要部署一个只有5个错误的应用程序,而是要感谢您的所有测试。另一个优势是允许您更确定地重建代码。换句话说,您可以清理功能,或更改代码本身的结构,使其更易于阅读,同时您也可以执行相同的确切任务。
一般而言,软件开发中有三种类型的自动测试。
构建应用程序时应执行哪些类型的测试?如果我们有几种类型,哪种是最好的?最可能的是您将进行三种测试。最多的测试是单位测试,因为它们易于使用写入并快速执行。次要,您将获得集成测试的集合。应用程序中的整合测试可能小于单位测试。最后,您将进行一些末端 - 端测试,因为这些测试是最全面的,但是最慢的。此方法看起来像是金字塔。注意E2E代表“ end -to -end”或函数。
这意味着您将编写大多数测试单元测试。对于测试覆盖范围之间的任何差距,使用集成测试。最终,至少是末端-TO -END测试。
因此,我们什么时候可以编写测试!让我们现在开始!首先,我们要创建一个JavaScript测试目录,然后我们可以使用NPM安装Jest.LET的首次使用NPM INIT来创建一个新的package.json文件。
现在我们可以安装开玩笑。
现在,我们应该看一下突出显示包装中的行。JSON文件。这意味着当我们在命令行中运行时,脚本将运行以执行所有测试。
让我们尝试一下,看看会发生什么。
非常好!开玩笑正在工作,但我们尚未测试。LET创建一个!在我们的项目中,我们可以添加一个文件夹。在此文件夹中,我们将放置一个文件。
实际上,在文件名中出现的测试一词将使Jest知道这是一个测试。这是我们的第一个测试。它没有测试任何内容,但这将使我们能够在命令行中运行以查看会发生什么。
现在,让我们进行测试并检查一下!
我们看到了开玩笑中的测试的样子。现在,让我们看看失败的测试的外观。我们可以像这样修改测试。
现在,当我们运行它时,我们会获得许多有用的信息。
在我们的实用程序文件中,有一个可以创建绝对数字的函数。换句话说,它永远不会返回负数。
让我们编写一个新的测试来测试此问题。这是第一次迭代。
我们可以运行此测试并通过它。
即使给出了负数,也应该返回一个正数。没有问题,我们可以将其添加到测试中。
现在,当我们进行测试时,它再次通过了。非常好!另外,请注意我们进行了多少次测试。
现在让我们进行失败的测试,以显示如何使用预期值和接收值消除故障。我们知道,如果此功能的输入值为0,则应返回0.我们可以进行测试以使其失败在这种情况下,这样。
查看失败测试的输出。
这只是为了显示失败的测试的外观。我们可以修复此测试。现在,该1个功能的三个测试都是成功的,看起来像这样。
现在,我们可以测试处理字符串的函数。请考虑此简单功能,并在有人提供时问他们好。
让我们对此进行测试。该测试将使用新的语法。
当我们运行它时,测试看起来不错。
测试字符串时可以使用的另一个选项是tocontain()匹配,而不是tobe()。原因是测试可能过于具体并且可能失败。以下是同一测试的稍微灵活的版本。
让我们看一下可以在开玩笑中使用的一些简单数组测试。想象中的象征我们具有返回库存代码数组的功能。
以下是我们为此创建的测试。检查文档以了解arrayContaining()函数的工作方式。
在此功能中,我们通过了一个游戏ID,该游戏ID返回了带有ID的游戏对象。
这里有一个测试以确保我们获得正确的游戏。
当我们进行此测试时,一切看起来都不错。
对于具有投掷错误的功能,我们需要采用不同的方法来测试。请考虑此功能,它会创建一个新的用户。没有用户名,它将引发异常。
这是我们测试这样的功能的方式。
当我们运行它时,测试将通过。
总而言之,我们已经了解了以下有关测试的概念。