简介
buddy-tap 是一个用于测试 Node.js 应用程序和模块的轻量级测试工具。它基于 tap 和 puppy,可以使用基于 JavaScript 的测试语言编写测试用例。buddy-tap 旨在提供完整的测试框架,可以与 CI/CD 管道轻松集成。
安装
可以使用 npm 安装:
--- ------- --------- ----------
使用
编写测试用例
首先,定义测试用例,并将其保存在 test/ 目录下的文件中,文件名必须以 .test.js 结尾。以下是一个简单的示例:
--- --- - --------------------- ------------- ------ -- ----- --- -------- --- ------------ -------- --- - ----------- --- ------- -- ----- -------- ---
运行测试
在 package.json 文件中添加以下脚本:
- ---------- - ------- ---------- ------------------ - -
运行测试:
--- ----
如果所有测试通过,将输出以下消息:
---- -- - --- ------ -- ----- --- -------- --- ---------- - -------- - ----- - - ---- - - --
测试用例
buddy-tap 支持以下测试用例函数:
test(name, cb)
定义一个测试套件,参数 name 是测试套件名称,参数 cb 是测试套件的回调函数。
test.skip(name, cb)
定义一个跳过的测试套件,这个测试套件不会被执行。它与 test() 的用法相同。
test.only(name, cb)
定义一个只运行的测试套件,只有它会被执行,它与 test() 的用法相同。
t.ok(value, [message])
断言值为真,如果为假报告错误。第二个参数是可选的错误消息。
---------- ----- ------ ------- ------- ----- ------ ------- ----------------- ----- ------ ------- -------- ----- ------ ------- -------- ----- ------ -------
t.notOk(value, [message])
断言值为假,如果为真报告错误。第二个参数是可选的错误消息。
-------------- ----- ------ ------- ---------- ----- ------ ------- ----------- ----- ------ ------- ------------- ----- ------ -------
t.equal(actual, expected, [message])
断言两个值相等,如果不相等报告错误。第三个参数是可选的错误消息。
----------- --- ----- ------ ------- -------------- ------ ----- ------ -------
t.notEqual(actual, expected, [message])
断言两个值不相等,如果相等报告错误。第三个参数是可选的错误消息。
------------- -- ----- ------ ------- ----------------- ------ ----- ------ -------
t.strictEqual(actual, expected, [message])
断言两个值类型和值相等,如果不相等报告错误。第三个参数是可选的错误消息。
----------------- --- ----- ------ ------- -------------------- ------ ----- ------ -------
t.notStrictEqual(actual, expected, [message])
断言两个值类型和值不相等,如果相等报告错误。第三个参数是可选的错误消息。
-------------------- ----- ----- ------ ------- ----------------------- ------ ----- ------ -------
t.deepEqual(actual, expected, [message])
断言两个对象深度相等,如果不相等报告错误。第三个参数是可选的错误消息。
------------- ---- ----- -- - ---- ----- -- ----- ------ -------
t.notDeepEqual(actual, expected, [message])
断言两个对象深度不相等,如果相等报告错误。第三个参数是可选的错误消息。
---------------- ---- ----- -- - ---- ----- -- ----- ------ -------
t.pass([message])
无条件通过测试。
------------ ------ -------
t.fail([message])
无条件失败测试。
------------ ------ -------
t.isError(value, [message])
断言值是 Error 类型,如果不是 Error 类型报告错误。第二个参数是可选的错误消息。
------------- ----------- -- -- -------- ----- ------ -------
t.isFunction(value, [message])
断言值是函数类型,如果不是函数类型报告错误。第二个参数是可选的错误消息。
--------------- -- -------------------- ----- ------ -------
t.isNumber(value, [message])
断言值是数字类型,如果不是数字类型报告错误。第二个参数是可选的错误消息。
--------------- ----- ------ -------
t.isString(value, [message])
断言值是字符串类型,如果不是字符串类型报告错误。第二个参数是可选的错误消息。
------------------- ----- ------ -------
t.isArray(value, [message])
断言值是数组类型,如果不是数组类型报告错误。第二个参数是可选的错误消息。
------------------ ----- ------ -------
t.isObject(value, [message])
断言值是对象类型,如果不是对象类型报告错误。第二个参数是可选的错误消息。
----------------- ------- ---- ---- ----- ------ -------
t.isBoolean(value, [message])
断言值是布尔类型,如果不是布尔类型报告错误。第二个参数是可选的错误消息。
----------------- ----- ------ -------
t.isNaN(value, [message])
断言值是 NaN,如果不是 NaN 报告错误。第二个参数是可选的错误消息。
------------ ----- ------ -------
t.isNotNaN(value, [message])
断言值不是 NaN,如果是 NaN 报告错误。第二个参数是可选的错误消息。
------------- ----- ------ -------
异步测试
如果测试涉及异步调用,可以使用 t.end() 函数结束测试。以下是一个简单的异步测试示例:
---------------------- ------ -------- --- - ------------------- -- - ---------- -- ------- -- -------- -------- -- ----- ---
高级语法
如果需要在整个测试运行前或后执行代码,可以使用 t.beforeAll() 和 t.afterAll() 函数。以下是一个示例:
--- --- - --------------------- ---------------------- --- ----- - -- -- --------- ------ --- ----- ----------------- ----------- ------- --- --------------------- --- ----- - -- -- --------- ----- --- ----- ---------------- ----------- ------- --- ------------- ------ -- ----- --- -------- --- ------------ -------- --- - ----------- --- ------- -- ----- -------- ---
总结
buddy-tap 是一个非常简单的测试框架,可以轻松地创建单元测试和集成测试。它具有易于阅读和编写的语法,具有大量的断言函数,并且可以与 CI/CD 管道轻松集成。如果您没有使用过测试框架,建议您从 buddy-tap 开始学习。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/60066c8dccdc64669dde5572