摩卡 - 需要等到迁移

时间:2018-04-12 09:02:10

标签: node.js testing mocha

在开始我的mocha套件测试之前,我遇到了运行数据库迁移的挑战。

我使用标志--require加载我创建的bootstrap.js模块以及运行数据库迁移的位置。

问题是迁移是一个异步功能,你知道它会立即返回。那么,有什么方法可以等待模块准备就绪,直到它完成了所有内容?

我可以使用一些同步lib将迁移转换为同步,但我希望听到更多策略。

1 个答案:

答案 0 :(得分:1)

您可以定义全局before挂钩,如下所示:

import {runMigration} from './bootstrap';
before(done => {
    runMigration().then(done);
});

describe('some part of my suite', () => {
    /* ... */

如果你在" root suite"中写这个钩子。 - 也就是说,在你自己的任何describe块之外 - 它将在所有测试之前运行,无论你把这个块放在哪个文件中。

Docs on root level hooks

请注意,你的钩子花了太长时间,你可能会开始收到错误,例如"超过2000毫秒的超时",这可以通过运行带有--timeout标志的mocha来解决 - 就像{{1 }}