使用自己的Promise库和解决连接超时导致的异步问题

2017-08-29  本文已影响236人  黑山老水

默认Promise Library警告

再次运行npm run test查看输出:

warning

这是因为Mongoose不赞成使用default promise library。


使用自己的Promise Library

例如:

打开test_helper.js文件,修改并删除:

//告诉mongoose使用这个Promise Library的Implementation
//ES6 promise of node environment
mongoose.Promise = global.Promise;

再次运行npm run test查看输出。


解决连接可能导致的异步问题

  1. 我们希望Mocha的流程:
Mocha测试流程

因为连接也需要时间,为了防止连接花了过长的时间,我们必须让Mocha等待连接完毕了才执行测试。

  1. 另一个hook function (before function):只在我们整个测试组之前执行一次。
//在我们执行测试之前,先用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)
           });
       });
上一篇 下一篇

猜你喜欢

热点阅读