默认Promise Library警告
再次运行npm run test
查看输出:
这是因为Mongoose不赞成使用default promise library。
使用自己的Promise Library
例如:
- bluebird
- q
- ES6 Promise
打开test_helper.js文件,修改并删除:
//告诉mongoose使用这个Promise Library的Implementation
//ES6 promise of node environment
mongoose.Promise = global.Promise;
再次运行npm run test
查看输出。
解决连接可能导致的异步问题
- 我们希望Mocha的流程:
因为连接也需要时间,为了防止连接花了过长的时间,我们必须让Mocha等待连接完毕了才执行测试。
- 另一个hook function (before function):只在我们整个测试组之前执行一次。
- 连接到mongoose,不管这个连接需要多长时间,Mocha都要等待
- 当connection open,让Mocha开始我们第一组测试
//在我们执行测试之前,先用hook function执行一次连接
before((done) => {
//告诉mongoose当前需要连接的数据库在哪。
//localhost: 在当前机器上,查找MongoDB.
//localhost 变成 port 比如:65.54.6.46:4000, 查找远程数据库
//users_test是自定义的MongoDB中多个数据库的一个
mongoose.connect('mongodb://localhost/users_test', {
useMongoClient: true, //The same is true for connect() and createConnection() if useMongoClient is true.
});
mongoose.connection //once和on都是event handler
//监听数据库发出的叫open的事件一次,然后调用一个函数
.once('open', () => {done();})
//监听数据库发出的叫error的事件,然后调用一个函数
.on('error', (error) => {
console.warn('Warning', error)
});
});