在前端开发中,我们经常需要对某些功能模块进行单元测试,而单元测试需要模拟某些环境变量或操作,这时候就需要使用一些 mock 工具库了。今天我们介绍一个非常实用的 npm 包 nonly。
nonly 是什么?
nonly 是一款轻量级 mock、spy 库,可以像 sinon 一样轻松地定义和测试依赖项的行为,并在测试时控制每个依赖项的行为。
安装
在使用 nonly 之前,我们需要先将其安装到项目中,可以使用 npm 命令进行安装:
--- ------- ----- ----------
快速示例
下面我们通过一个快速示例来展示 nonly 的基本使用方法。
-- ------ ------ ----- ---- ------- ------ ------- -------- ----------- - ------ ---------------------- --------- -- --------- -
-- ----------- ------ --------- ---- -------- ------ - -- ----- ---- -------- ------ - ---- - ---- -------- --------------------- -- -- - ---------- ----- ------ -- -- - ----- ------------ - - ----- - --- -- -------- ------- - -- ----------- ---------------------------------------------- ------ --------------------- -- - ---------------------------------------- --- --- ---
该示例中,我们定义了一个 fetchData 函数,其使用了 axios 来请求数据。在测试时,我们使用 nonly 来进行 mock,模拟 axios 的 get 方法,并返回指定的数据。最后再调用 fetchData 并断言返回的数据是否与预期一致。
API
nonly 提供的 API 有以下几种:
mock(target, methodName)
用于 mock 指定对象的 methodName 方法,返回一个 Mock 对象。
示例:
------ - -- ------ ---- ----------- ------ - ---- - ---- -------- ---------- --------- -- -- - ----- ---------- - - ------- --------- -- ----- ------------ - ------------ ------------------------------------ ----- -------- - --- ---------------------- ------------------------------------------------- ------------------------------------------ --------------------------------------- ---
spy(target, methodName)
用于 spy 某个对象的指定方法,并返回一个 Spy 对象。
示例:
------ - -- ------ ---- ----------- ------ - --- - ---- -------- --------- --------- -- -- - ----- ----------- - ----------- ---------- ------------------ ---------- ---------------------------------------- ----------------------------------------- ----------- ---
Mock
Mock 对象提供了以下方法和属性:
returns(value)
用于设置该 mock 操作的返回值,返回 Mock 对象实例本身。
示例:
------ - -- ------ ---- ----------- ------ - ---- - ---- -------- ---------- ------- --------- -- -- - ----- ------------ - ------------ ------------------------- --------- ------ --- ---------- --------------------------------------------- --------------------------------------- ---
throws(error)
用于指定该 mock 操作抛出的错误,返回 Mock 对象实例本身。
示例:
------ - -- ------ ---- ----------- ------ - ---- - ---- -------- ---------- ------ --------- -- -- - ----- ------------- - --- ----------- -------- ----- ------------ - ------------ -------------------------------------- --------- -- --- ---------------------------------------------- --------------------------------------- ---
resolves(value)
用于将该 mock 操作返回 Promise 并指定 Promise 解析值,返回 Mock 对象实例本身。
示例:
------ - -- ------ ---- ----------- ------ - ---- - ---- -------- ---------- -------- --------- -- -- - ----- ------------ - ------------ -------------------------- --------- ------ --- ------ --- --------------------------------- -- - ------------------------------------- --------------------------------------- --- ---
rejects(error)
用于将该 mock 操作返回 Promise 并指定 Promise 拒绝错误,返回 Mock 对象实例本身。
示例:
------ - -- ------ ---- ----------- ------ - ---- - ---- -------- ---------- ------- --------- -- -- - ----- ------------- - --- ----------- -------- ----- ------------ - ------------ --------------------------------------- ------ --- --------------------------------- -- - ---------------------------------- --------------------------------------- --- ---
called
用于判断该 mock 操作是否被调用,返回 Boolean 类型值。
args
用于获取该 mock 操作被调用时的参数列表,返回 Array 类型值。
Spy
Spy 对象提供了以下方法和属性:
called
用于判断该 spy 操作是否被调用,返回 Boolean 类型值。
args
用于获取该 spy 操作被调用时的参数列表,返回 Array 类型值。
总结
nonly 是一款非常好用的 mock 工具库,其 API 语法简洁优雅,非常容易上手。在前端开发中,使用 nonly 可以帮助我们更快更准确地进行单元测试。希望该文章可以对读者有所启发和帮助。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/6005701881e8991b448e7d00