2
我正在尋找使用摩卡或sinon測試mysql查詢的最佳實踐。我想測試非常基本的數據庫查詢,如保存:解耦查詢與測試的最佳實踐
User.prototype.save = function(cb) {
var query = 'INSERT INTO user (name, email, password, img, description)'
+ 'values (?, ?, ?, ?, ?)';
var params = [this.name, this.email, this.pass, this.img, this.description];
db.query(query,
params,
function(err, rows) {
if (err) return cb(err);
cb(rows.insertId);
}
);
};
我相信我要讓數據庫,並使用該對象我的數據庫對象,而不是模擬,但我也想測試分離來自應用程序邏輯的邏輯。
我試過變化沿
describe('User', function() {
before(function() {
mock = sinon.mock(require('../middleware/db'));
})
describe('.save()', function() {
var uid;
it('should run save on a user', function() {
var user = new User ({
name: 'Test Case 1',
email: '[email protected]',
pass: 'pass',
img: 'path/to/img.jpg'
});
user.save(function(id) {
id.should.be.ok;
var uid = id;
});
})
it('should save the user', function() {
var ret = User.find(uid);
ret.should.be.ok;
ret.should.have.property('description');
ret.name.should.equal('Test Case 1');
ret.email.should.equal('[email protected]');
})
})
行會是怎樣測試這種類型的函數的最佳實踐?
感謝