在前端开发中,我们经常需要对代码进行测试来确保其正确性。其中,断言(assert)是一种常用的测试方式。npm 上有很多开源的断言库,本文将介绍其中一款 —— justo.assert。
简介
justo.assert 是一款轻量级的,灵活的 Node.js 断言库。它可以被用作 Node.js 或浏览器端的断言库。
同时,它也支持插件机制,你可以通过插件来增强函数库的能力。
安装使用
使用 npm 安装:
--- ------- ------------ ----------
安装后,你可以在项目中引入并使用它:
----- ------ - ------------------------ ---------- --- -- -- - - ---- ----
你也可以为你的测试编写一个运行器,来简化测试过程:
----- ------ - ------------------------ -------- -------------- --- - ------------------ ----- - -------- -------- --- - --- - ----- ------------- - ---------- - ----- --- - ------------- - -------- --------------- - - ---------------- -- -- - ----- - - ---- --- -- -- - ---------- --- -- -- - - ---- ---- --- ----- - - ---- --- -- -- - ---------- --- -- -- - - ---- ---- --- ---
运行你的测试:
- ---- ------- ---- - - - - ---- - - - - - ---- -
断言 API
justo.assert 提供了以下断言 API:
assert(value, [msg])
- value (Any): 待测试的值。
- msg (String): 断言失败时提示的信息。
若 value
为假,则抛出错误,提示信息为 msg
(默认为 "Assertion failed.")。
-------- - - --- ---
assert.not(value, [msg])
- value (Any): 待测试的值。
- msg (String): 断言失败时提示的信息。
若 value
为真,则抛出错误,提示信息为 msg
(默认为 "Assertion failed.")。
------------ - - --- ---
assert.equal(actual, expected, [msg])
- actual (Any): 实际的值。
- expected (Any): 期望的值。
- msg (String): 断言失败时提示的信息。
若 actual
不等于 expected
,则抛出错误,提示信息为 msg
(默认为 actual + " !== " + expected.
)。
-------------- - -- ---
assert.notEqual(actual, expected, [msg])
- actual (Any): 实际的值。
- expected (Any): 期望的值。
- msg (String): 断言失败时提示的信息。
若 actual
等于 expected
,则抛出错误,提示信息为 msg
(默认为 actual + " === " + expected.
)。
----------------- - -- ---
assert.strictEqual(actual, expected, [msg])
- actual (Any): 实际的值。
- expected (Any): 期望的值。
- msg (String): 断言失败时提示的信息。
若 actual
不恒等于 expected
,则抛出错误,提示信息为 msg
(默认为 actual + " !== " + expected.
)。
-------------------- - -- ---
assert.notStrictEqual(actual, expected, [msg])
- actual (Any): 实际的值。
- expected (Any): 期望的值。
- msg (String): 断言失败时提示的信息。
若 actual
恒等于 expected
,则抛出错误,提示信息为 msg
(默认为 actual + " === " + expected.
)。
----------------------- - -- ---
assert.same(actual, expected, [msg])
- actual (Any): 实际的值。
- expected (Any): 期望的值。
- msg (String): 断言失败时提示的信息。
若 actual
不和 expected
指向相同的对象,则抛出错误,提示信息为 msg
(默认为 actual + " !== " + expected.
)。
--- --- - --- --- ------- - ---- ---------------- ---------
assert.notSame(actual, expected, [msg])
- actual (Any): 实际的值。
- expected (Any): 期望的值。
- msg (String): 断言失败时提示的信息。
若 actual
和 expected
指向相同的对象,则抛出错误,提示信息为 msg
(默认为 actual + " === " + expected.
)。
--- --- - --- --- ---------- - --- ------------------- ------------
assert.instance(value, constructor, [msg])
- value (Any): 待测试的值。
- constructor (Function): 期望的构造函数。
- msg (String): 断言失败时提示的信息。
若 value
不是 constructor
的实例,则抛出错误,提示信息为 msg
(默认为 value + " is not an instance of " + constructor.name + ".")。
------------------- ------- ------
assert.notInstance(value, constructor, [msg])
- value (Any): 待测试的值。
- constructor (Function): 期望的构造函数。
- msg (String): 断言失败时提示的信息。
若 value
是 constructor
的实例,则抛出错误,提示信息为 msg
(默认为 value + " is an instance of " + constructor.name + ".")。
---------------------- ------
assert.nil(value, [msg])
- value (Any): 待测试的值。
- msg (String): 断言失败时提示的信息。
若 value
不为 null 或 undefined,则抛出错误,提示信息为 msg
(默认为 value + " is not nil.")。
----------------------
assert.notNull(value, [msg])
- value (Any): 待测试的值。
- msg (String): 断言失败时提示的信息。
若 value
为 null 或 undefined,则抛出错误,提示信息为 msg
(默认为 value + " is nil.")。
------------------
assert.ok(value, [msg])
- value (Any): 待测试的值。
- msg (String): 断言失败时提示的信息。
若 value
不为真,则抛出错误,提示信息为 msg
(默认为 "Assertion failed.")。
----------- - - --- ---
assert.fail([msg])
- msg (String): 断言失败时提示的信息。
始终抛出错误,提示信息为 msg
(默认为 "Assertion failed.")。
-------------- - - --- ----
拓展
同时,justo.assert 支持拓展,下面将讲解如何拓展该库。
justo.assert 的拓展是通过插件来实现的。一个插件需要导出一个函数,在该函数中将断言 API 作为入参传入,然后对 API 做出任意的调整。例如,你可以为断言库增加自定义的断言 API。
以下是一个示例插件,它添加了一个 assert.greaterThan
方法。
定义 plugin.js:
-------------- - ---------------- - ------------------ - ---------------- --------- ---- - ----------------- -- ---------------- -- ------ - --------- - ------- - ----- --- --------- -- ------ - - -- --- ------- ---- - - -------- - ----- -- --
使用插件:
----- ------ - ------------------------ ----- ------ - -------------------- --------------- --------------------- ---
注意,该插件只是示例,实际情况中需要自行根据自己项目需要编写插件。
总结
本文介绍了 justo.assert 的使用和拓展。该断言库提供了丰富的 API,并且支持插件,可以为开发者带来更好的使用体验。希望通过本文的介绍,对读者们有所帮助。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/5f19331b403f2923b035c44e