用Mongoose中的Mocha测试保存方法

时间:2014-11-07 11:35:34

标签: node.js mongodb mongoose mocha

我正在写一个基本的摩卡测试。我尝试创建一个用户并将其保存到数据库中。

var should      = require('should');
var User        = require('../../models/User.js');
require('../utils');

var testAccount = new User({
    local:{
        email: 'test@gmail.com',
        password: 'a'
}});

describe('request', function() {
    describe('request', function() {
        it('should create users', function(done) {
            testAccount.save(function(err, user){
                should.not.exist(err);
                done();
            });
        });
        it('should list users', function(done) {
            User.find({}, function(err, users){
                should.not.exist(err);
                users.length.should.equal(1);
                done();
            });
        });
    });
});

utils.js是一个简单的js文件,可确保与数据库的连接

var dbURI     = 'dburi';
var mongoose  = require('mongoose');
var clearDB   = require('mocha-mongoose')(dbURI);

beforeEach(function (done) {
  if (mongoose.connection.readyState === 0) {
    mongoose.connect(dbURI, function (err) {
      if (err) {
        throw err;
      }
      return done();
    });
  } 
  else {
    return done();
  }
});

afterEach(function (done) {
  mongoose.disconnect();
  return done();
});

Mocha不会为save方法抛出任何错误,即使它没有保存用户(我也检查了数据库)。我错过了什么吗?

  1 passing (67ms)
  1 failing
  1) request request should list users:
  Uncaught AssertionError: expected 0 to be 1
  + expected - actual
  +1
  -0

1 个答案:

答案 0 :(得分:1)

我明白了。我需要mocha-mongoose模块在​​每次测试之前清除数据库。