NodeJs,Mocha和Mongoose

我有以下结构:

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

用他们的代码:

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: 'contact@com.br',
                    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);

问题是......当我运行“摩卡”来执行我的单元测试时,保存函数的回调没有执行。

谢谢大家!


问题通过以下方法解决 - https://github.com/joshmosh/node-mongoose-mocha-demo

我也发现这个解决方案 - https://github.com/elliotf/mocha-mongoose。 我没有尝试过,但看起来不错。

链接地址: http://www.djcxy.com/p/60679.html

上一篇: NodeJs, Mocha and Mongoose

下一篇: Nexus 7 not visible over USB via "adb devices" from Windows 7 x64