Node.js 测试总结
本文是最近在学习 Node.js 测试方面的总结,包括单元测试、集成测试、基准测试以及代码覆盖率测试等多方面的的内容。对于中大型项目,完备的测试用例有助于保证项目的持续集成能力和代码的健壮性。
Unit Test 单元测试,又称模块测试,针对程序中的最小执行单元进行正确性测试。常见的开发模式包括 TDD 和 BDD 两类。
TDD(Test-driven development,测试驱动开发),先编写测试用例,然后针对测试用例开发模块,当测试用例不足时,补充测试用例;当模块无法通过测试时,持续更新模块代码,直到完全通过测试用例。其开发核心围绕测试用例展开,即测试用例的完整性决定了开发模块的健壮性和正确性,这容易由边界条件引发单元测试覆盖度不够的问题。
BDD(Behavior-driven development,行为驱动开发),用语义化的编程语言开发紧贴业务需求的测试用例,继而驱动相关模块的开发。
AVA 是 JavaScript 生态中最新潮的测试框架,其内置了 Babel,可以直接使用 ES6 语法,具有轻量高效、并发执行、强制隔离等优点,安装方法:
设置 package.json 中的 scripts 字段:
运行:
下面是一个基本的测试代码:
在上面的代码中,我们首先引入了 AVA 模块,然后创建了待测试的 fibonacci 函数,接下来是两个测试用例,最后是四个钩子方法:before() / after() / beforeEach() / afterEach()。
AVA 提供了一下修饰方法来指定测试的执行方式:
1、skip(),跳过添加了 skip() 的测试用例;
2、only(),只执行添加了 only() 的测试用例;
3、todo(),占位标识符,表示将来需要添加的测试用例;
4、serial(),串行执行测试用例,默认情况下 AVA 会以并行的方式执行测试用例。
在上面代码回调函数中的 t,称为断言执行对象,该对象包含以下方法:
·t.end(),结束测试,只在 test.cb() 中有效
·t.plan(count),指定执行次数
·t.pass([message]),测试通过
·t.fail([message]),测试失败
·t.ok(value, [message]),断言 value 的值为真值
·t.notOK(value, [message]),断言 value 的值为假值
·t.true(value, [message]),断言 value 的值为 true
·t.false(value, [message]),断言 value 的值为 false
·t.is(value, expected, [message]),断言 value === expected
·t.not(value, expected, [message]),断言 value !== expected
·t.same(value, expected, [message]),断言 value 和 expected 深度相等
·t.notSame(value, expected, [message]),断言 value 和 expected 深度不等
·t.throws(function | promise, [error, [message]]),断言 function 抛出异常或 promisereject 错误
·t.notThrows(function | promise, [message]),断言 function 不会异常或 promise resolve
·t.regex(contents, regex, [message]),断言 contents 匹配 regex
·t.ifError(error, [message]),断言 error 是假值
集成测试 相对于专注微观模块的单元测试,集成测试是从宏观整体的角度发现问题,所以也称为组装测试和联合测试。Travis CI 是一款优秀的持续集成工具,可以监听 Github 项目的更新,便于开源软件的集成测试。使用 Travis CI 需要在项目的根目录下创建 .travis.yml 配置文件(以 Node.js 为例):
默认情况下,Travis CI 会自动安装依赖并执行 npm test 命令,通过 script 字段可以自定义需要执行的命令,其完整的生命周期包括:
·Install apt addons
·before_install
·install
·before_script
·script
·after_success or after_failure
·OPTIONAL before_deploy
·OPTIONAL deploy
·OPTIONAL after_deploy
·after_script
基准测试使用严谨的测试方法、测试工具或测试系统评估目标模块的性能,常用于观测软硬件环境发生变化后的性能表现,其结果具有可复现性。在 Node.js 环境中最常用的基准测试工具是 Benchmark.js,安装方式:
基本示例:
代码覆盖率 代码覆盖率工具根据测试用例覆盖的代码行数和分支数来判断模块的完整性。AVA 推荐使用 nyc 测试代码覆盖率,安装 nyc:
修改 .gitignore 忽略相关文件:
修改 package.json 中的 test 字段:
执行 npm test,得到:
由于上传附件及文字限制,有时部分图片、文字可能显示不了,详情请见:http://mp.weixin.qq.com/s?__biz=MzI5ODI3NzY2MA==&mid=100000510&idx=2&sn=8339d4fca5f54ab3a9ec305eae756436#rd
欢迎大家一起交流。
扫描以下二维码,获取更多更精美文章!(扫码关注有意向不到的惊喜的哦!!)
![]() 关注我们微信订阅号( uniguytech100) 与服务号(uniguytech),获取更多更精美文章!
也欢迎加入【大家技术网讨论QQ群】,群号码:256175955,请备注你个人的介绍!让我们一起聊聊it的那些事! |

Heiße KI -Werkzeuge

Undresser.AI Undress
KI-gestützte App zum Erstellen realistischer Aktfotos

AI Clothes Remover
Online-KI-Tool zum Entfernen von Kleidung aus Fotos.

Undress AI Tool
Ausziehbilder kostenlos

Clothoff.io
KI-Kleiderentferner

AI Hentai Generator
Erstellen Sie kostenlos Ai Hentai.

Heißer Artikel

Heiße Werkzeuge

Notepad++7.3.1
Einfach zu bedienender und kostenloser Code-Editor

SublimeText3 chinesische Version
Chinesische Version, sehr einfach zu bedienen

Senden Sie Studio 13.0.1
Leistungsstarke integrierte PHP-Entwicklungsumgebung

Dreamweaver CS6
Visuelle Webentwicklungstools

SublimeText3 Mac-Version
Codebearbeitungssoftware auf Gottesniveau (SublimeText3)

Heiße Themen



Laravel vereinfacht die Behandlung von temporären Sitzungsdaten mithilfe seiner intuitiven Flash -Methoden. Dies ist perfekt zum Anzeigen von kurzen Nachrichten, Warnungen oder Benachrichtigungen in Ihrer Anwendung. Die Daten bestehen nur für die nachfolgende Anfrage standardmäßig: $ Anfrage-

Die PHP Client -URL -Erweiterung (CURL) ist ein leistungsstarkes Tool für Entwickler, das eine nahtlose Interaktion mit Remote -Servern und REST -APIs ermöglicht. Durch die Nutzung von Libcurl, einer angesehenen Bibliothek mit Multi-Protokoll-Dateien, erleichtert PHP Curl effiziente Execu

Alipay PHP ...

Laravel bietet eine kurze HTTP -Antwortsimulationssyntax und vereinfache HTTP -Interaktionstests. Dieser Ansatz reduziert die Code -Redundanz erheblich, während Ihre Testsimulation intuitiver wird. Die grundlegende Implementierung bietet eine Vielzahl von Verknüpfungen zum Antworttyp: Verwenden Sie Illuminate \ Support \ facades \ http; Http :: fake ([ 'Google.com' => 'Hallo Welt',, 'github.com' => ['foo' => 'bar'], 'Forge.laravel.com' =>

Möchten Sie den dringlichsten Problemen Ihrer Kunden in Echtzeit und Sofortlösungen anbieten? Mit Live-Chat können Sie Echtzeitgespräche mit Kunden führen und ihre Probleme sofort lösen. Sie ermöglichen es Ihnen, Ihrem Brauch einen schnelleren Service zu bieten

In Artikel wird die in PHP 5.3 eingeführte LSB -Bindung (LSB) erörtert, die die Laufzeitauflösung der statischen Methode ermöglicht, um eine flexiblere Vererbung zu erfordern. Die praktischen Anwendungen und potenziellen Perfo von LSB

In Artikel werden wichtige Sicherheitsfunktionen in Frameworks erörtert, um vor Schwachstellen zu schützen, einschließlich Eingabevalidierung, Authentifizierung und regelmäßigen Aktualisierungen.

In dem Artikel werden Frameworks hinzugefügt, das sich auf das Verständnis der Architektur, das Identifizieren von Erweiterungspunkten und Best Practices für die Integration und Debuggierung hinzufügen.
