如何在mocha单元测试中使用mongoose?

时间:2014-08-19 08:55:00

标签: node.js mongodb mongoose mocha

我觉得很困惑,如何在mocha中进行单元测试涉及mongodb,我仍然无法成功调用save函数而没有异常被抛出。

我尝试使用最简单的测试示例,发现仍有问题。这是我的代码。

var assert = require("assert")
var mongoose = require('mongoose');

mongoose.connect('mongodb://localhost/dev', function(err){
  if(err) throw err
});

describe('increment Id', function(){
  describe('increment', function(){
    it('should has increment', function(){


      var Cat = mongoose.model('Cat', { name: String });

      var kitty = new Cat({ name: 'Zildjian' });
      kitty.save(function (err) {
        if (err) throw err
        console.log('meow');
      });

    })
  })
})

此代码不会引发异常,但mongodb中没有更新或创建数据。

> show collections
pieces
sequences
system.indexes

1 个答案:

答案 0 :(得分:6)

您正在同步运行测试。

要执行异步测试,您应该添加回调函数:

it('should has increment', function(done){
  var Cat = mongoose.model('Cat', { name: String });
  var kitty = new Cat({ name: 'Zildjian' });
  kitty.save(function (err) {
    if (err) {
      done(err);
    } else {
      console.log('meow');
      done();
    }
  });
})

或只是

it('should has increment', function(done){
  var Cat = mongoose.model('Cat', { name: String });
  var kitty = new Cat({ name: 'Zildjian' });
  kitty.save(done);
})