javascript – NodeJs,Mocha和Mongoose

前端之家收集整理的这篇文章主要介绍了javascript – 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,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);

问题是…
当我运行“mocha”来执行我的单元测试时,不执行save函数的回调.

谢谢大家!

解决方法

问题通过 this方法解决了.

我还发现another solution看起来不错,但我没有.

猜你在找的JavaScript相关文章