NodeJs、Mocha 和 Mongoose

2024-01-24

我有以下结构:



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

用他们的代码:

猫鼬测试.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] /cdn-cgi/l/email-protection',
                    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);
                });
            });
        })
    })

  

用户模型.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);

  

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

感谢大家!


问题已解决this https://github.com/joshmosh/node-mongoose-mocha-demo方法。

我还发现另一种解决方案 https://github.com/elliotf/mocha-mongoose看起来不错,但我没有。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

NodeJs、Mocha 和 Mongoose 的相关文章

随机推荐