2012-10-24 26 views
5

tôi có cấu trúc sau:NodeJs, Mocha và Mongoose

 
|server 
|db 
    |mongooseTest.js 
|test 
    |userModel.test.js 
|user 
    |userModel.js 

Với mã của họ:

mongooseTest.js

 

    var mongoose = require('mongoose'); 

    module.exports = function() { 
     var db = mongoose.createConnection('localhost', 'dbUnitTest'); 

     db.on('connected', function() { 
      console.log('DB: ' + db.name + ' local: ' + db.host + ':' + db.port); 
     }); 

     db.on('error', function(err) { 
      console.log(err); 
     }); 

     return db; 
    }; 

userModel.test.js

 

    var assert = require('assert'), 
     should = require('should'), 
     conn = require('../db/mongooseTest'), 
     UserModel = require('../user/userModel'); 

    describe('User Model', function() { 
     describe('Save', function() { 

      it('Saving...', function() { 
       var db = conn(); 
       var Model = db.model('User'); 
       var userModel = new Model({ 
        name: 'My Name', 
        email: '[email protected]', 
        pass: 'anything123' 
       }); 

       userModel.on('save', function(user) { 
        console.log('Passed by save event handle from user'); 
       }); 

       userModel.save(function(err, user) { 
        console.log('Passed by save from user'); 
        if(err) console.log(err); 
        console.log(user); 
       }); 
      }); 
     }) 
    }) 

userModel.js

 

    var mongoose = require('mongoose'), 
     crypto = require('crypto'), 
     Schema = mongoose.Schema; 

    var setPass = function(value) { 
      var salt = 'anyRandomSaltValue'; 
      this.set('salt', salt); 
      var pass = hashPass(value + salt); 
      return pass; 
     } 

    var hashPass = function(value) { 
      return crypto.createHash('sha1').update(value).digest('HEX'); 
     } 

    var userSchema = new Schema({ 
     name: { 
      type: String, 
      required: true 
     }, 
     email: { 
      type: String, 
      required: true, 
      unique: true 
     }, 
     pass: { 
      type: String, 
      required: true, 
      set: setPass 
     }, 
     salt: { 
      type: String, 
      required: true 
     } 
    }); 

    userSchema.method({ 
     validatePass: function(senha) { 
      var salt = this.get('salt'); 
      var passSha = hashPass(senha + salt); 
      return passSha === this.get('senha'); 
     }, 
    }); 

    userSchema.static({ 
     findByEmail: function(email, success, error) { 
      this.findOne({ 
       email: email 
      }, function(e, o) { 
       if(e) { 
        if(error) error(e); 
       } else { 
        if(success) success(o); 
       } 
      }); 
     }, 
    }); 

    module.exports = mongoose.model("User", userSchema); 

Vấn đề là ... Khi tôi chạy "mocha" để thực hiện các bài kiểm tra đơn vị của tôi, gọi lại của lưu chức năng không được thực hiện.

Cảm ơn tất cả!

Trả lời

Các vấn đề liên quan