在所有文件中的所有测试都运行完之后,我想删除数据库。摩卡咖啡中有它的钩子吗?
after()
钩子只能在1个文件内应用。
答案 0 :(得分:1)
创建一个包含/需要所有其他测试的父文件,然后在该文件中使用after
:
describe('User', () => {
require('../user/user.spec.js')
})
describe('Post', () => {
require('../post/post.spec.js')
})
describe('Tag', () => {
require('../tag/tag.spec.js')
})
describe('Routes', () => {
require('./routes.spec.js')
})
after(() => {
// drop database
})
答案 1 :(得分:1)
在摩卡中有一个根目录挂钩。对于您的情况,可以创建一个新文件并在after
函数中指定drop database命令。就是这样!
// init-test.js
after(function() {
// drop database
});
对于此解决方案,您无需在其他测试文件中移动任何测试。
答案 2 :(得分:0)
我正在使用process.on('exit')
。它仅在运行一个文件以及从 package.json 运行测试时有效。
database.mocha-base.js:
db.connect()
process.on('exit', async () => {
console.log('All tests finished. Droping database')
db.dropDatabase(dbName)
db.disconnect()
})
module.exports = {
applyHooks() {
before(async () => {
// truncate tables
})
}
}
在所有需要数据库访问的测试中,我都包含database.mocha-base.js
:
const dbMochaBase = require('./path/to/database.mocha-base.js')
describe('Tests', () => {
dbMochaBase.applyHooks()
...
})