介绍
@tuapath/knex-cleaner2
是一个 Node.js 的 npm 包,它可以实现让你的 Knex.js 数据库状态恢复到初始状态。这个包的主要功能是将数据库的数据清空,重置计数器以及重置自增 ID。
在编写测试用例的时候,我们通常需要先将数据库中的数据清空,这样我们才能进行正确的测试。手动清空每个表格是一项重复的任务,而 @tuapath/knex-cleaner2
能够帮助我们实现自动清空数据库数据的功能,并且还可以保证自增 ID 计数器的正确性。
安装
在使用 @tuapath/knex-cleaner2
之前,我们首先需要安装该 npm 包。你可以使用以下命令来进行安装:
npm install @tuapath/knex-cleaner2 --save-dev
使用方法
我们首先需要定义你的
Knex.js
实例,你可以使用您自己的 Knex 实例或者创建一个新的:-- -------------------- ---- ------- ----- ---- - ----------------- ------- -------- ----------- - ----- ------------ ----- --------------------- --------- ------------------------- --------- --------------------- -- ---
引入
@tuapath/knex-cleaner2
包,并且初始化它,确保你在每次测试后,都会将数据库状态恢复到它最初的状态:const { knexCleaner } = require("@tuapath/knex-cleaner2"); beforeEach(async () => { await knexCleaner.clean(knex, { mode: "truncate", // 重置整个数据库 ignoreTables: ["knex_migrations", "knex_migrations_lock"], //忽略以下的表 }); });
在你的测试用例中,你可以像平常一样使用你的
Knex.js
实例来进行查询操作,在使用结束后,它会被自动删除 test 表格的所有数据然后重新开始计数,并保证计数器它是正确的:it("should insert one record in `test` table", async () => { const initialValues = { name: "Ada Lovelace" }; await knex("test").insert(initialValues); const [record] = await knex("test").where("name", initialValues.name); expect(record.name).toEqual(initialValues.name); });
参数说明
在使用 knexCleaner.clean(knex, options)
时,可以通过 options 对象来设置不同的参数。
以下是参数说明:
mode
(String):表示数据库恢复模式。有两种模式:'delete'(默认) 和 'truncate'。在 delete 模式下,它将使用 DELETE 语句来删除每个表格中的内容。在 truncate 模式下,它将使用 TRUNCATE 语句来将每个表格设置为初始状态。ignoreTables
(Array):要忽略掉的表格。例如,您可能希望删除所有表格,但是默认留下创建表格的两个 Knex 插件,可以将['knex_migrations', 'knex_migrations_lock']
添加到您的忽略列表中。restartIdentity
(Boolean):在truncate
模式下,设置此选项,它将重置自增 ID 和计数器。默认为false
。
示例代码
下面是一个完整的示例代码,展示了如何使用 @tuapath/knex-cleaner2
进行数据库状态恢复:
-- -------------------- ---- ------- ----- ---- - ----------------- ------- -------- ----------- - ----- ------------ ----- --------------------- --------- ------------------------- --------- --------------------- -- --- ----- - ----------- - - ---------------------------------- -------------- --- --------- -- -- - ---------------- -- -- - ----- ----------------------- - ----- ----------- ------------- ------------------- ------------------------ ---------------- ----- --- --- -------------- -- -- - ----- --------------- --- ---------- ------ --- ------ -- ------ ------- ----- -- -- - ----- ------------- - - ----- ---- --------- -- ----- ----------------------------------- ----- -------- - ----- -------------------------- -------------------- ------------------------------------------------ --- ---
以上就是使用 npm 包 @tuapath/knex-cleaner2
的使用教程,希望能够帮助到你!
来源:JavaScript中文网 ,转载请注明来源 https://www.javascriptcn.com/post/60066b4d51ab1864dac66817