【发布时间】:2016-09-28 21:23:44
【问题描述】:
在我的测试环境中,我使用mocha 作为我的测试运行器。我已将NODE_ENV 配置为setup.js 文件中的“测试”,我将其配置为在启动时使用mocha 运行
mocha --require setup.js
我使用sequelize 作为我的ORM,我希望它在force 标志设置为true 的情况下初始化。我应该在哪里执行sync 函数?
import models from '../src/data/models';
models.sync({
force: true
});
由于它是一个异步函数,测试可能会在同步阶段完成之前开始。
【问题讨论】:
-
你需要使用 before 钩子。由于同步返回一个承诺,你应该写 before(function() { return models.sync({ force: true }) })
-
我应该在哪里写这个钩子?我没有包含所有测试的主文件,我执行这样的测试:
mocha \"src/**/*.test.js\" --require test/setup.js --compilers js:babel-register -
我在下面评论了您应该如何为依赖于数据库的每个测试显式重建数据库。如果您仍然对某些全局钩子感兴趣,我建议您查看我发布的另一个答案 stackoverflow.com/questions/28191243/… - 基本上您可以通过将全局钩子放在任何描述块之外来编写全局钩子。再说一次,我真的不推荐它,因为它不是明确的,也很难跟踪突变,但取决于你......
标签: javascript node.js mocha.js