Jak wyłudzić bazę danych w mojej aplikacji node.js, która w tym przypadku używa mongodb
jako zaplecza dla interfejsu API REST bloga?Prześmiewanie bazy danych w pliku node.js?
Oczywiście mogę ustawić bazę danych na konkretną bazę danych testing
, ale nadal będę zapisywać dane i nie testować tylko mojego kodu, ale także bazy danych, więc w rzeczywistości nie wykonuję testów jednostkowych, ale testowania integracji.
Co więc należy zrobić? Tworzenie wrapperów baz danych jako środkowej warstwy między aplikacją a bazą danych i zastąpienie DAL podczas testowania?
// app.js
var express = require('express');
app = express(),
mongo = require('mongoskin'),
db = mongo.db('localhost:27017/test?auto_reconnect');
app.get('/posts/:slug', function(req, res){
db.collection('posts').findOne({slug: req.params.slug}, function (err, post) {
res.send(JSON.stringify(post), 200);
});
});
app.listen(3000);
// test.js
r = require('requestah')(3000);
describe("Does some testing", function() {
it("Fetches a blogpost by slug", function(done) {
r.get("/posts/aslug", function(res) {
expect(res.statusCode).to.equal(200);
expect(JSON.parse(res.body)["title"]).to.not.equal(null);
return done();
});
});
));
Wiesz, robisz dobry punkt. Podczas gdy testy jednostkowe służą fenomenalnym celom (tj. Izolacji), masz mocny punkt do testowania integracji. –
@MichaelPerrenoud: Podoba mi się zasada określona przez odpowiedź christkva: ** "Nie wyśmiewuj się z niczego, co nie posiadasz" **. Chociaż nie wyjaśnia szczegółowo, dlaczego jest to zły pomysł, jest to łatwa do zapamiętania reguła. – slebetman
Nie zgadzam się z tą odpowiedzią, w meteorjach instalują testową bazę danych podczas wykonywania testów (zakładam, że nie jest to sztuczna biblioteka, ale tymczasowy plik) i jest to bardzo wygodne. Byłoby bardzo użyteczne mieć obiekt, który zachowuje się dokładnie jak monondy i czyści po sobie. Czy to wszystko w pamięci, czy plik tymczasowy, to szczegóły implementacji, więc nie trzeba powielać kodu. Zgadzam się, że ludzie, którzy robią kierowcę, powinni być tymi, którzy robią fałszywy obiekt. – Uri