Tôi đang sử dụng node.js/express với https://github.com/dresende/node-orm2 để sử dụng cơ sở dữ liệu MySQL của tôi.Làm thế nào để bạn giả lập MySQL (với nút-hoặcm2) trong Node.js/Express?
Tôi mới vào thế giới node.js và tôi khá mắc kẹt cho đến nay, tôi không biết làm thế nào để kiểm tra đơn vị (không tích hợp kiểm tra) một chức năng đơn giản.
Đây là server.js của tôi, tải mô hình của tôi sử dụng (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...');
đây là mô hình sử dụng:
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();
};
và đây là phương pháp của tôi để tìm bạn bè tích cực trong bạn bè. js:
var _findActiveFriends = function(req, res) {
req.currentUser.getFriends({
status: 'active'
}, function(err, friends) {
if (err) throw err;
res.send(JSON.stringify(friends));
});
};
Tôi muốn biết làm cách nào để viết một bài kiểm tra đơn giản (với mocha và sinon.js?) bằng cách mô phỏng ing kết nối cơ sở dữ liệu và yêu cầu cũng có. Tôi cần phải giả định giá trị của req.currentUser mà người dùng trả về bởi ORM trong phần mềm trung gian.
Tôi chỉ muốn chạy thử nghiệm đơn vị và không sử dụng DB thực hoặc thực hiện một số cuộc gọi HTTP.
cảm ơn sự giúp đỡ của bạn.