मैं अपने node.js एप्लिकेशन में डेटाबेस का नकल कैसे करूं, जो इस मामले में mongodb
ब्लॉग रीस्ट एपीआई के बैकएंड के रूप में उपयोग करता है?node.js में डेटाबेस का मज़ाक उड़ा रहा है?
निश्चित रूप से, मैं डेटाबेस को एक विशिष्ट testing
-डेटाबेस पर सेट कर सकता हूं, लेकिन मैं अभी भी डेटा सहेज सकता हूं और केवल मेरे कोड का परीक्षण नहीं करता, बल्कि डेटाबेस भी, इसलिए मैं वास्तव में यूनिट परीक्षण नहीं कर रहा हूं बल्कि एकीकरण परीक्षण कर रहा हूं।
तो किसी को क्या करना चाहिए? एप्लिकेशन और डीबी के बीच एक मध्यम परत के रूप में डेटाबेस रैपर बनाएं और परीक्षण में डीएएल को प्रतिस्थापित करें?
// 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();
});
});
));
आप जानते हैं, आप एक अच्छा मुद्दा बनाते हैं। जबकि यूनिट परीक्षण एक असाधारण उद्देश्य (यानी अलगाव) प्रदान करता है, आपने एकीकरण परीक्षण के लिए एक मजबूत बिंदु बना दिया है। –
@ माइकलपेरनौड: मुझे क्रिसक के उत्तर द्वारा निर्धारित नियम पसंद है: ** "जो कुछ भी आपके पास नहीं है उसका नकल न करें" **। हालांकि यह विस्तार से नहीं जाता है कि यह एक बुरा विचार क्यों है, यह याद रखना एक आसान नियम है। – slebetman
मैं इस जवाब से असहमत हूं, उल्का में उन्होंने किसी भी तरह परीक्षण परीक्षण करते समय एक परीक्षण डीबी स्थापित किया (मुझे लगता है कि यह एक नकली पुस्तकालय नहीं है, बल्कि एक अस्थायी फ़ाइल है) और यह बहुत सुविधाजनक है। यह एक ऑब्जेक्ट होना बहुत उपयोगी होगा जो एक मोंगोडब की तरह व्यवहार करता है और खुद के बाद साफ करता है। चाहे यह स्मृति में है या एक अस्थायी फ़ाइल कार्यान्वयन विस्तार है, इसलिए आपको कोड को डुप्लिकेट करने की आवश्यकता नहीं है। मैं सहमत हूं कि जो लोग ड्राइवर बनाते हैं वे मॉक ऑब्जेक्ट बनाते हैं। – Uri