使用AVA和XO进行代码测试和提示

简介

在过去的几年里,网络开发的编码技术已经发生了变化,开发人员已经开始采用各种JavaScript框架,因为它们具有多功能的特点,而不是像Java和PHP这样的传统编程语言。下一个大问题是如何测试在这些新框架上编写的代码。

你知道哪个是最好的JavaScript测试框架吗?几乎不可能说某个测试工具是最好的,但有几个名字如JEST、Mocha、Karma和AVA通常被认为是性能最好的。

大多数测试人员没有意识到AVA的力量。本文将解释AVA的基础知识,帮助你了解它的不同功能,包括如何创建测试案例文件。这可以帮助你为你的特定测试案例选择正确的工具。

除了AVA之外,我还将谈论提示和XO,一个新的提示工具。这篇文章应该让你更好地了解什么是提示,以及它在测试中的好处。

AVA

AVA是一个开源的Node.js测试运行器,它使代码测试变得简单方便,测试案例更加稳定、可读和有组织。它是由Sindre Sorhus和Kevin Mårtensson在2014年开发的。

AVA为测试用例提供了详细的错误输出,它有一个名为 “Magic assert “的功能,可以处理错误并以简单而丰富的方式显示。它还支持新的语言功能。它给了测试人员完全的控制权,其简单的语法使它相对于同类的其他工具来说很受欢迎。

AVA的特点

下面列出了AVA的一些最佳功能。

平行测试运行

AVA默认以并行方式执行测试用例,与其他工具相比,花费的时间更少。并行运行迫使测试人员确保所有的测试都是完全独立的,这始终是一个好的做法。

只有一个

AVA的另一个伟大的特点是,你可以选择只运行你正在进行的一个测试。如果你有一些失败的测试案例,而你想一个一个地修复它们,这很有用。

观察模式

AVA能够识别受影响的测试文件,并且只在这些特定文件中重新运行测试。这是由于 “观察模式 “的功能,它是非常奇妙的。如果你改变一个测试用例文件,它将只重新运行该文件。如果你改变一个源文件,它将重新运行所有依赖它的测试案例。

插件支持

AVA包含自己的插件,旨在为不同的使用情况进行灵活配置。

过程隔离功能

对于每个测试文件,AVA启动一个新的Node.js进程,这意味着你可以安全地修改全局状态而不影响不相关的测试。它还可以完全运行多个测试文件,每个文件都在自己的进程中。

可观察的支持

可观察支持是一种数据类型,可用于模拟基于推送的数据源,如套接字、DOM事件和定时器间隔等。如果你想发射一堆流式数据值,最好使用它。它可以与高阶组合组成,并且在观察者订阅之前不会开始发射数据。

编辑器插件

AVA有许多插件可以与不同的文本编辑器连接,如Sublime、Atom和VS Code。

AVA的劣势

和每个工具一样,AVA也有一些缺点。

其中一个主要的缺点是,AVA不支持浏览器测试,这可能会限制它的使用情况。幸运的是,AVA的开发团队正在努力解决这个问题。

AVA也没有对DOM的任何内置支持。而且由于它是一个相对较新的工具,Ava仍然有很多开放性问题。

社区仍在成长,但它仍然很小,所以与其他测试框架相比,文档或教程较少。

安装AVA

AVA的安装过程很快,你只需要遵循几个简单的步骤。在你开始之前,你必须安装Node.js,以便安装AVA。

然后,在命令提示符中输入这段代码。

mkdir ava_folder
cd    ava_folder
npm init ava

复制代码

这将创建一个名为ava_folder 的文件夹。接下来的一行代码cd ava_folder ,将移到该文件夹内,最后一条命令将安装AVA。该文件夹中会有一些新的文件。

为了验证安装,打开package.json 文件,如果它包含下面的代码(除了版本),一切都应该被设置好。

Screenshot of code indicating successful installation of AVA

如果你喜欢使用yarn,那么就按照下面的命令进行。

yarn add ava --dev

复制代码

你也可以用下面的命令手动安装AVA。

npm install --save-dev ava

复制代码

创建你的测试文件

要创建测试文件,请打开安装AVA的根目录,并创建一个文件,名称为SampleTest.js

在该文件中写入以下代码,只是为了测试的目的。

const SampleTest= require('ava');

SampleTest('foo', t => {
                         t.pass();
                        }
           );
SampleTest('bar', async t => {
                              const bar = Promise.resolve('bar');
                              t.is(await bar, 'bar');
                             });

复制代码

运行测试文件

一旦测试文件被创建,下一个问题就是如何执行它们。你可以使用下面的命令来执行。

npm SampleTest

复制代码

如前所述,AVA有一个智能观察模式。要在启用观察模式的情况下运行测试,请使用下面的命令。

npx ava --watch

复制代码

向测试文件传递参数

AVA提供了一个选项,可以向测试文件传递命令行参数。

在通过npm脚本调用AVA时,你需要两个-- 参数终止符。

npm SampleTest -- -- --hello world

复制代码

XO

XO是一个强大的刷新工具。如果你对提示工具不熟悉,不用担心,我会在这里解释它们。

提示工具通过分析源代码来标记编程错误、bug、文体错误和可疑的结构,帮助你改进你的代码。提示工具可以使你和你的代码更有效率,节省你的时间和金钱。

XO的特点

XO因其众多功能而成为造林者中最受欢迎的选择之一。它可以避免和控制编写JavaScript代码时在语法上的愚蠢错误。将XO添加到项目文件夹中是一个简单的任务,只需执行一个单行命令就可以实现。

其中一个最好的特点是,它通过简单的命令xo --fix ,自动修复了许多问题。

XO的另一个伟大的品质是,它支持不同的插件。一些编辑器插件包括Sublime Text, Atom, Vim, TextMate 2, VSCode, Emacs, 和WebStorm。XO还支持ESLint插件,如unicornimportavanode ,以及更多。

XO支持TypeScript文件(.ts,.d.ts和.tsx)。假设你有很多文件需要配置–不需要指定文件路径给lint,因为XO会自动lints所有的.js文件(除了通常被忽略的路径)。

XO在数据库方面有主要的支持。它可以为数据库模式或自定义查询生成Go代码。它是一个命令行工具,通过使用元数据和SQL自省查询来识别模式中的类型和关系,并针对发现的关系应用一套标准的Go模板。

目前,它可以为PostgreSQL、Oracle、MySQL、Microsoft SQL Server和SQLite3等不同数据库生成表、存储过程、枚举和自定义SQL查询的类型。

安装XO

XO需要Node.js,所以建议在安装XO之前先安装Node.js。

要通过控制台安装,使用下面的命令。

npm install — global xo

复制代码

你也可以在命令提示符下使用下面的命令手动安装XO。

npm init xo

复制代码

一旦它被安装在一个特定的目录中,找到package.json文件。如果该文件包含与下图相同的代码(除了版本),则安装成功。

Screenshot of code after successful installation of XO

使用XO进行代码测试

在本节中,你将学习如何使用XO测试Node.js代码。为了演示,我们将为一个将两个数字相加的应用编写测试案例,并使用Visual Studio插件来运行测试。

首先,创建一个文件夹,在其中编写代码。在下面的截图中,你可以看到我创建了一个文件夹,名称为TESTSAMPLEXO

在Visual Studio的终端运行以下命令。

Npm init -y

复制代码

一旦上述命令被执行,package.json 文件应该看起来像这个截图。

Screenshot of package.json installed correctly

现在,在前面的步骤中创建的同一文件夹中,创建一个测试文件sum.js 。它应该看起来像这样。

Screenshot of Sum.js file

下一步是在目录(TESTSAMPLEXO**)**中添加XO。要做到这一点,执行以下命令。

npm init xo

复制代码

在同一目录下还需要创建一个文件,名称为sum.text.js (在我的例子中)。编写测试案例,如下图所示。

Screenshot of test case code in which two numbers will be added together

最后,是执行测试命令的时候了。使用下面的语法来执行测试用例。

npm test

复制代码

如果在运行命令时出现错误,按照所示说明逐一清除它们。

每次清除错误后,你必须在命令提示符或终端执行命令npm test ,测试输出将显示如下。

Screenshot of failed test

结论

在这篇文章中,你了解了AVA,一个JavaScript的测试工具,和XO,一个刷新工具。现在你已经熟悉了这些工具的力量。

XO是一个有用的工具,它可以改进和完善代码,并在它们变成更大的问题之前捕捉到bug。

正如前面所解释的,AVA确实值得一试。它结合了Jasmine的易用性和Tape的简单性。它同时支持前端和后端的JavaScript应用程序,可以使测试JS代码变得轻而易举。

The postCode testing and linting using AVA and XOappeared first onLogRocket Blog.

© 版权声明
THE END
喜欢就支持一下吧
点赞0 分享