私は次の構造を持っています:
|サーバー | 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関数のコールバックが実行されません。
全てに感謝!