मैं अपने MySQL डेटाबेस का उपयोग करने के लिए https://github.com/dresende/node-orm2 के साथ node.js/एक्सप्रेस का उपयोग कर रहा हूं।आप Node.js/Express में MySQL (नोड-ओआरएम 2 के साथ) कैसे नकल करते हैं?
मैं नोड.जेएस दुनिया में नया हूं और मैं अब तक काफी अटक गया हूं, मुझे नहीं पता कि यूनिट टेस्ट (एकीकरण परीक्षण नहीं) कैसे एक सरल कार्य है।
module.exports = function (db, cb) {
var User = db.define('user', {
uid : { type: 'number', rational: false, unique: true, required: true },
first_name : { type: 'text', size: 100, required: true },
last_name : { type: 'text', size: 100, required: true },
picture : { type: 'text', size: 255, required: false },
email : { type: 'text', size: 255, required: true },
creation_date : { type: 'date', time: true },
modification_date : { type: 'date', time: true }
}, {
methods: {
fullName: function() {
return this.first_name + ' ' + this.last_name;
}
},
hooks: {
beforeCreate: function (next) {
if (this.creation_date == undefined) {
this.creation_date = new Date();
}
if (this.modification_date == undefined) {
this.modification_date = new Date();
}
return next();
}
}
});
// CUSTOM FUNCTIONS
User.getByUid = function(uid, callback) {
this.find({ uid: uid }, function(err, users) {
if(err) callback(err);
if (users.length == 1) {
callback(null, users[0]);
} else {
callback('No user found with uid=' + uid);
}
});
};
User.hasMany("friends", User, {
status: { type: 'enum', values: ['pending', 'refused', 'active'] }
}, {
reverse: 'friendsrev', mergeId: 'user_id', mergeAssocId: 'friend_id'
});
return cb();
};
और यहाँ मित्रों में सक्रिय दोस्तों को खोजने के लिए अपने तरीकों है:
यहाँ मेरी server.js, मेरे उपयोगकर्ता मॉडल (ORM)
var express = require('express'),
orm = require('orm'),
config = require('./config/config.js'),
auth = require('./services/authentication'),
helper = require('./middlewares/helper.js'),
friends = require('./modules/friends.js');
var app = express();
app.use(orm.express('mysql://' + config.mysql.username + ':' + config.mysql.pwd + '@' + config.mysql.host + ':' + config.mysql.port + '/' + config.mysql.db, {
define: function(db, models, next) {
db.load("./models/models.js", function(err) { // loaded!
models.user = db.models.user;
});
}
}));
var middlewares = [auth.authenticate, helper.retrieveUser];
app.get('/friends', middlewares, friends.findActiveFriends);
app.listen(3000);
console.log('Listening on port 3000...');
यहाँ उपयोगकर्ता मॉडल है लोड हो रहा है है। js:
var _findActiveFriends = function(req, res) {
req.currentUser.getFriends({
status: 'active'
}, function(err, friends) {
if (err) throw err;
res.send(JSON.stringify(friends));
});
};
मुझे पता है कि कैसे मैं एक साधारण परीक्षण नकली द्वारा लिख सकते हैं (मोचा और sinon.js साथ?) चाहते हैं डेटाबेस कनेक्शन और अनुरोध भी आईएनजी। मुझे req.currentUser के मान का नकल करने की आवश्यकता है जो उपयोगकर्ता को ओआरएम द्वारा मिडलवेयर में लौटाया जाता है।
मैं सिर्फ यूनिट परीक्षण चलाने के लिए चाहता हूं और वास्तविक डीबी का उपयोग नहीं करता हूं या कुछ HTTP कॉल नहीं करता हूं।
आपकी सहायता के लिए धन्यवाद।