单元测试选用哪个数据库比较好
发布于 1 个月前 作者 a119347 1312 次浏览 来自 问答

我们生产环境使用postgresql,单元测试的时候使用的是sqlite3,ORM用的是sequelize,现在的一个问题是很多postgresql支持的语法到sqlite3上就不支持了,这个要怎么弄呢 比如数据类型为json的,需要使用$contains来进行查询,但是sqlite3不支持

9 回复

为啥不同样pg呢? 我不喜欢orm,准备用 sql builder 的knex

@zuohuadong 我觉得和 nest 一样的复杂。。 还是先试试 knex 吧。

@waitingsong nest 用习惯了就觉得非常好用了~ 尤其是项目大一些的时候

@zuohuadong 小公司,我一人要负责框架选型,制作各端的开发框架模板以及相关的轮子,k8s/istio 基础设施的部署,开发流程规范的制订。实在没精力去折腾两三天都还没搞懂的技术。思路是尽量可控,降低技术风险, 先把整个流跑起来再说,功能不足以后再增加或者换框架。 这也是为公司核心(单体)项目接下来的大升级做技术预(cai)演(keng)。

@waitingsong 单元测试用了sqlite3的内存数据库,如果是pg的话,那是不是要单独准备一个数据库做测试才行,knex同样也是支持ORM的吧strapi就是knex

@a119347 可以考虑用docker做个单测基础pg镜像,然后用这个镜像跑测试。

全栈框架CabloyJS的单元测试机制供参考: CabloyJS后台基于EggJS,统一采用MySQL数据库 EggJS提供了三个运行环境:测试环境开发环境生产环境。CabloyJS在EggJS的基础上,对这三个运行环境赋予了进一步的意义: 1、测试环境:当运行npm run test:backend时,CabloyJS就会自动删除旧的测试数据库,建立新的数据库。从而便于总是从零状态开始单元测试 2、开发环境:当运行npm run dev:backend时,CabloyJS会自动寻找最新创建的测试数据库,然后一直使用它。当然,如果在开发过程中,发现数据库架构变了,可以再执行一遍npm run test:backend,就自动重建了全新的测试数据库,不必打开workbench之类的管理软件手工修改数据库架构 3、生产环境:当运行npm run start:backend时,CabloyJS就会使用全新的生产数据库,正式使用

回到顶部