Я пытаюсь написать набор тестовых блоков для моего простого уровня БД SimpleDbLayerс использованием nodeunit. Я нахожу это довольно сложным.Пробные тесты с использованием соединений/драйверов DB с nodeunit
Проблема:
1) Я хочу подключиться к БД один раз и использовать это соединение. Я не могу использовать setUp и tearDown, поскольку они запускаются до и после каждый тест. В качестве «решения» я использую переменную модуля для области (см. Код ниже)
2) В моем простом слое DB есть несколько драйверов DB. MongoMixin - только один из них - я разрабатываю MariaMixin и PostgresMixin. В идеале я бы запускал эти тесты по одному для каждого драйвера, чтобы убедиться, что они работают. Есть ли хороший и простой способ сделать это?
3) Я делаю ошибки, когда я делаю ошибку с кодом моего теста, и все, что я получаю, является жалобой на test.done, которая не обнаружена. Есть ли какие-то обман, которые мне нужно знать здесь?
4) Я делаю что-нибудь ужасно неправильно? (см. код)
var
dummy
, declare = require('simpledeclare')
, SimpleDbLayer = require('./SimpleDbLayer')
, MongoMixin = require('./MongoMixin.js')
, mw = require('mongowrapper')
, async = require('async')
;
var db, layer;
exports.createLayer = {
databaseConnect: function(test){
mw.connect('mongodb://localhost/hotplate', {}, function(err, returnedDb){
test.ifError(err);
db = returnedDb;
test.done(null);
});
},
makeLayer: function(test){
var C = declare([ SimpleDbLayer, MongoMixin ]);
layer = new C('test', { name: true, surname: true, age: true }, db);
test.ok(layer);
test.done();
},
deleteAll: function(test){
layer.delete({ }, { multi: true }, function(err, howmany){
test.ifError(err);
test.done();
});
},
insert: function(test){
var people = [
{ name: 'Chiara', surname: 'Mobily', age: 24 },
{ name: 'Tony', surname: 'Mobily', age: 37 },
{ name: 'Sara', surname: 'Connor', age: 14 },
{ name: 'Daniela', surname: 'Mobily', age: 64 },
];
returnedPeople = [];
var functions = [];
// Populate the database
people.forEach(function(person){
functions.push(function(done){
layer.insert(person, { returnRecord: true }, function(err, person){
test.ifError(err);
returnedPeople.push(person);
done(null);
})
})
})
async.series(functions, function(err, res){
test.ifError(err);
test.done();
});
},
databaseDisconnect: function(test){
db.close();
test.done();
},
}