在开始我的mocha套件测试之前,我遇到了运行数据库迁移的挑战。
我使用标志--require
加载我创建的bootstrap.js
模块以及运行数据库迁移的位置。
问题是迁移是一个异步功能,你知道它会立即返回。那么,有什么方法可以等待模块准备就绪,直到它完成了所有内容?
我可以使用一些同步lib将迁移转换为同步,但我希望听到更多策略。
答案 0 :(得分:1)
您可以定义全局before
挂钩,如下所示:
import {runMigration} from './bootstrap';
before(done => {
runMigration().then(done);
});
describe('some part of my suite', () => {
/* ... */
如果你在" root suite"中写这个钩子。 - 也就是说,在你自己的任何describe
块之外 - 它将在所有测试之前运行,无论你把这个块放在哪个文件中。
请注意,你的钩子花了太长时间,你可能会开始收到错误,例如"超过2000毫秒的超时",这可以通过运行带有--timeout
标志的mocha来解决 - 就像{{1 }}