【发布时间】:2017-04-15 14:38:42
【问题描述】:
我正在尝试为数据库播种以进行单元测试。
下面是seed.js 文件:
.......
const app = require('./app')
const db = app.get('db')
const saveUsersToDB = (done) => {
db.User.bulkCreate(users)
.then(() => (done))
}
module.exports = {saveUsersToDB};
我的app.test.js 文件:
.......
const expect = require('expect')
const request = require('supertest')
const {saveUsersToDB} = require('./seed/seed');
before(saveUsersToDB)
当我运行下面的测试是我得到的错误:
Express listening on port 3000!
1) "before all" hook: saveUsersToDB
0 passing (2s)
1 failing
1) "before all" hook: saveUsersToDB:
Error: Timeout of 2000ms exceeded. For async tests and hooks, ensure "done()" is called; if returning a Promise, ensure it resolves.
npm ERR! Test failed. See above for more details.
我认为返回.then(() => (done)) 就足够了?我做错了什么?
【问题讨论】:
-
应该是
.then(() => done())。 -
Mocha 也支持 Promise,所以规范可以只返回一个 Promise。
-
我希望你能找到一个可行的解决方案。我在这里用
before回答了这个问题。 stackoverflow.com/a/70200966/5375291
标签: javascript node.js ecmascript-6 mocha.js es6-promise