我有一个node.js程序,它与mysql服务器有交互。现在我将使用mocha编写功能测试。
我进行功能测试的方式如下:
我对上述策略的问题是:
如何让node.js等待mysql容器为连接做好准备?目前,我使用setTimeout等待几秒钟。我认为这不合适。因为不同的机器可能需要不同的秒数才能使容器准备好连接。
是否可以创建一个假的mysql服务器而不是使用docker容器来创建一个真正的mysql服务器?我还没有发现任何模仿mysql服务器行为的节点模块。因为我认为创建一个假的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}`)
}
})
})
})