私は次の構造を持っています:
|サーバー | db | mongooseTest.js |テスト | userModel.test.js |ユーザー | userModel.js
彼らのコードで:
mongooseTest.js
var mongoose = require('mongoose'); module.exports = function(){ var db = mongoose.createConnection('localhost'、'dbUnitTest'); db.on('接続済み'、function(){ console.log('DB:' + db.name +'ローカル:' + db.host +':' + db.port); }); db.on('error'、function(err){ console.log(err); }); dbを返します。 };
userModel.test.js
var assert = require('assert')、 should = require('should')、 conn = require('../ db / mongooseTest')、 UserModel = require('../ user / userModel'); describe('ユーザーモデル'、function(){ describe('Save'、function(){ it('Saving ...'、function(){ var db = conn(); var Model = db.model('User'); var userModel = new Model({ 名前:'私の名前'、 メール:'contact@com.br'、 パス:'anything123' }); userModel.on('save'、function(user){ console.log('ユーザーからの保存イベントハンドルによって渡されます'); }); userModel.save(function(err、user){ console.log('ユーザーからの保存によって渡されました'); if(err)console.log(err); console.log(user); }); }); }) })
userModel.js
var mongoose = require('mongoose')、 crypto = require('crypto')、 スキーマ=mongoose.Schema; var setPass = function(value){ var salt ='anyRandomSaltValue'; this.set('salt'、salt); var pass = hashPass(value + salt); リターンパス; } var hashPass = function(value){ crypto.createHash('sha1')。update(value).digest('HEX');を返します。 } var userSchema = new Schema({ 名前: { タイプ:文字列、 必須:true }、 Eメール: { タイプ:文字列、 必須:true、 ユニーク:true }、 パス: { タイプ:文字列、 必須:true、 セット:setPass }、 塩: { タイプ:文字列、 必須:true } }); userSchema.method({ validatePass:function(senha){ var salt = this.get('salt'); var passSha = hashPass(senha + salt); passSha === this.get('senha');を返します。 }、 }); userSchema.static({ findByEmail:function(email、success、error){ this.findOne({ メール:メール }、function(e、o){ if(e){ if(error)error(e); } そうしないと { if(success)success(o); } }); }、 }); module.exports = mongoose.model( "User"、userSchema);
問題は...「mocha」を実行して単体テストを実行すると、save関数のコールバックが実行されません。
全てに感謝!