前言
在开发 Web 应用时,数据操作是经常遇到的问题。然而,测试数据的管理却常常被忽视。较大规模的项目,测试数据的臃肿化会影响开发效率。因此,实现测试用例的数据标准化、统一管理显得十分必要。
作为一条后端 ORM 框架,Sequelize 在测试查询和修改时非常方便。然而,Sequelize 对于测试数据管理的支持较弱。 目前,npm 上有一个优秀的帮助开发者管理测试数据的第三方包:sequelize-testing-fixtures。本文将探讨如何在 Node.js 项目中使用 sequelize-testing-fixtures 。
What is sequelize-testing-fixtures
sequelize-testing-fixtures
是基于 Sequelize ORM 的 Node.js 测试工具,它可以快速生成测试用的 Sequelize 模型,使你的测试数据的创建和清理变得简单。它的主要功能有三个:
- 将单文件或多文件中包含 Sequeilze 匹配的 model 变量导出为 sequelize-testing-fixtures 规定的 'csv'文件格式。
- 使用 module.exports 导出的 fixtures 的 csv 文件,生成 sequelize 数据库的数据。
- 清除 sequelize-database 运行过程中产生的数据,或者测试运行之后导出的数据。
Getting Started
首先,我们需要为我们的工程添加 sequelize-testing-fixtures。
- --- - -------------------------- ----------
然后,我们需要创建一个测试文件。我们这里使用 Mocha
作为我们的测试框架:
---------------------- -- -- - ------------------------ ---
在我们新创建的 model
文件夹中,我们需要定义一个测试数据 fixtures 的文件。
-- ------ -- --- -- ---------- -- ---- -- ------ --- ---------
例如:
- ------ ---- ----- - ----- ---- ----- ------ --------------------- - ----- ----- ----- ------ ----------------------
这是我们的测试文档。
接下来,我们在测试文件中导入 Sequelize 的一个 helper 函数,该函数会提供一个完整的数据库实例。
----- - --------- - - ------------------------- ------------ -------- -- - ----- ------------------------------------------ ---
这里,我们使用 sequelize
实例对象的 fixtures
方法,传入符合语法的 yaml
文件,去自动加载所有的数据。这里,我们传入了 /models//*.yaml 作为 load-path 参数; sequelize-testing-fixtures 将会扫描 app/models 目录下的所有 yaml 文件,比亚入我们上述数据内容。
在测试结束后,我们想要清空整个数据库,以开始下一次测试。进一步, sequelize-testing-fixtures 的帮助
----------- ---------- - ----- ----------------- --
我们也可以选择更加个性化的使用 sequelize 提供的接口实现控制测试套件换床七之前数据库创建、收集、销毁的过程。
------------ ----------- ----- ---------------------- ------- ----- -------------------------------------- -- ----- ------ ----------- --- -------------- ------- ---------- - --- ----- ------------- ------ ------ ----------- ---------------- ---------- - ---- - ---------------------- -------- - ----- ------------------------------------ --- --------- --- --------- -- --- ------ -------- ----- ----------- ----- ----- - ----- ----------------- ------------------------------ ---------------------------------- --------- --- --------------- ----------- ----- --------------------- -- --- ---------------- ------ ------ ----------- ---------------- ---------- - ---- - ---------------------- ----- --------------------- --- --------- -- --- ----------- ----- ----------- ----- ----- - ----- ----------------- ------------------------------ -- --- --
重点解释一下:
- 数据库初始化
----- ---------------------- -------
sequelize.sync() 会为我们创建 Table,在这里我们使用此函数清空以前的数据,防止护照的测试数据留在我们带测试中。
- 初始化数据
----- -------------------------------------- -- ----- ------ -----------
在表重新创建后,将新数据注入。bulkCreate 是将多条数据写入 DB 的便捷方法。也可以使用 error-first 的创建函数 create。
- 加载待测试 fixtures 文件
-------- - ----- ------------------------------------
载入当前测试文件同级目录下的 fixtures 文件。
- 清空测试数据,以便下一次测试
----- ---------------------
顾名思义,在表不存在的情况下,返回操作明细。我们这里是清空表,以便测试下一项测试。
Conclusion
sequelize-testig-fixtures 为测试数据的管理带来了很大的方便。无论是在测试时的数据导入,还是在测试完成后的数据清理,都为测试套件的开发提供了极大的支持。
代码示例:sequelize-testing-fixtures-demo。
延伸阅读
- pact-js pact-js 是为微服务和消费者创造约定的 JavaScript 版本。
- InversifyJS InversifyJS 是开源的、轻量级的 JavaScript 依赖注入框架,可以适用于节点.js 和浏览器。
- CyberChef 是一个解决各种加密、解密等问题的 Web 网站。
来源:JavaScript中文网 ,转载请联系管理员! 本文地址:https://www.javascriptcn.com/post/600551f381e8991b448cf73f