使用 Sequelize 进行集成测试

Posted

技术标签:

【中文标题】使用 Sequelize 进行集成测试【英文标题】:Integration testing with Sequelize 【发布时间】:2015-06-14 20:35:09 【问题描述】:

我有一个使用 sequelize 的 Express web api,我想用它进行端到端测试。我希望能够使用内存数据库进行端到端测试,这样我就可以在任何我喜欢的机器上运行它。

我使用 mysql 数据库进行开发和生产,但是我正在考虑使用内存中的 sqlite 数据库进行测试,但我不确定将测试数据导入其中的最佳方法是什么。

周围有几个模块,例如 squelize-fixtures,但它们似乎都不能只用数据填充数据库,而无需围绕它编写代码来操作和插入它。

这里有没有人用 sequelize 和 sqlite 进行集成测试,并找到了一种无需所有样板代码的好方法?

【问题讨论】:

【参考方案1】:

如果您以这种方式进行测试,它实际上不会是端到端测试,因为您使用的是不同的数据库。

但是,将 Sequelize 方言更改为 sqlite 然后使用 sequelize-fixtures 提取数据文件有什么问题?如果你觉得这太繁重了,你可以通过它一次,然后保存 sqlite db 文件以备将来使用。然后,您将使用

实例化您的 Sequelize 对象
storage: 'path/to/database.sqlite'

无论您做什么或选择什么存储,您都必须做一些工作来为您的数据库播种。

【讨论】:

以上是关于使用 Sequelize 进行集成测试的主要内容,如果未能解决你的问题,请参考以下文章

使用 Airflow 进行集成测试

集成测试

使用 Flyway 进行集成测试

使用 Jooq 进行集成测试

使用 Spring Boot 进行 Kotlin 集成测试

使用 MVC 进行依赖注入和内存集成测试