为与mysql数据库交互的node.js程序编写functiontesting的最佳策略

我有一个node.js程序,它与mysql服务器有交互。 现在我要用摩卡书写一个functiontesting。

我做functiontesting的方法如下:

  1. 用dockerode创build一个mysql docker 容器 。
  2. 让node.js程序连接到mysql服务器的docker容器并写入数据。
  3. 检查数据库是否包含预期的数据。
  4. 卸下docker箱。

我对上述策略存在的问题是:

  1. 我如何让node.js等待mysql容器准备好连接? 目前,我使用setTimeout等待几秒钟。 我不认为这是适当的。 因为不同的机器可能需要不同的秒数容器准备连接。

  2. 是否有可能创build一个虚假的MySQL服务器,而不是使用docker容器来创build一个真正的MySQL服务器? 我还没有find任何模仿mysql服务器行为的节点模块。 因为我认为创build一个假的MySQL服务器允许我知道服务器何时准备好连接。

有没有人有这样的经验?

以下是我的代码的一部分:

let Docker = require('dockerode') let docker = new Docker({socketPath: '/var/run/docker.sock'}) describe('Test AddShop2Database behavior', () => { before((done) => { setTimeout(setupDatabase, // setupDatabase create a mysql docker container 1000, (err, data) => { if (err) { console.error(`setupDatabase error: ${err}`) } else { console.log(`setupDatabase data: ${data}`) done() } }) }) it('should add data to some tables', (done) => { done() }) after(() => { // remove mysql docker container let container = docker.getContainer(ContainerName) container.remove({force: true}, (err, data) => { if (err) { console.error(`container remove error: ${err}`) } else { console.log(`container remove data: ${data}`) } }) }) })