2017-04-13 24 views
0

在我的Node.js API中,我使用promise-mysql连接到mySQL数据库。我使用Sequelize作为ORM。我想单元测试每个与数据库交互的微服务。在Node.js中测试和模拟mySQL数据库

很明显,在测试过程中,我不想创建一个真正的数据库连接,因为单元测试不应该依赖像数据库连接这样的依赖关系。相反,我想嘲笑它,使用内存或光盘数据库,如sqlite3

我试着将SQL转储迁移到sqlite3,但由于转储与sqlite3不兼容,所以出现错误。数据集的大小适中。

你能推荐一种方法吗?

回答

0

一种方法是使用mysql in memory table。这将非常快,如sqlite3

其他方式是创建迁移文件(我使用knex.js),而不是倾销,创建种子文件。

+0

什么Node.js模块你会用于mysql内存表?看起来不像promise-mysql支持这个。 – ChrisRich

+0

检查https://dev.mysql.com/doc/refman/5.7/en/memory-storage-engine.html –

+0

我最终将我的SQL数据库转储到CSV文件中,然后使用一个在线文件将CSV文件加载到sqlite3中,光盘数据库。它适用于较小的数据集。 这里的要点: https://gist.github.com/ChristianRich/a7e086c76ecd0db1c78ae5e15b11606d – ChrisRich