2011-09-25 17 views
15

मैं अपने नोड ऐप के कुछ हिस्सों के लिए यूनिट परीक्षण लिखने की कोशिश कर रहा हूं। मैं अपने ओआरएम के लिए मोंगोस का उपयोग कर रहा हूं।परीक्षण मोंगोस नोड.जेएस ऐप

मैंने मोंगोस और नोड के साथ परीक्षण करने के लिए एक गुच्छा खोजा है लेकिन कुछ भी नहीं आया है। समाधान/ढांचे सभी पूर्ण-ढेर लगते हैं या मॉकिंग सामान का कोई उल्लेख नहीं करते हैं।

क्या कोई तरीका है कि मैं अपने मोंगोस डीबी का मज़ाक उड़ा सकता हूं ताकि मैं अपने परीक्षणों में स्थिर डेटा वापस कर सकूं? मुझे एक परीक्षण डीबी स्थापित करने की आवश्यकता नहीं है और इसे प्रत्येक इकाई परीक्षण के लिए डेटा से भरना होगा।

क्या किसी और को इसका सामना करना पड़ा है?

उत्तर

6

मैंने इसे अपने कोड को थोड़ा सा बनाकर हल किया। मैं अपने सभी मोंगोस से संबंधित सामान को अलग-अलग वर्गों में "सेव", "ढूंढें", "डिलीट" जैसे एपीआई के साथ रख रहा हूं और कोई अन्य क्लास डेटाबेस तक सीधे पहुंच नहीं लेता है। तब मैं उन परीक्षणों में मजाक करता हूं जो डेटा पर भरोसा करते हैं।

मैंने कुछ वास्तविक वस्तुओं के साथ ऐसा कुछ किया जो लौटाए गए हैं। मेरे मॉडल में प्रत्येक मॉडल के लिए, मेरे पास एक समान वर्ग है जो इसे लपेटता है और फ़ील्ड में पहुंच-विधियां प्रदान करता है। वे भी आसानी से मजाक कर रहे हैं।

+11

क्या आपके पास कोड में इसका उदाहरण है? – bouncingHippo

8

मैं भी उत्तर की तलाश में गया, और यहां समाप्त हुआ। यह वही है जो मैंने किया:

मैंने अपने मॉडल में मौजूद मॉड्यूल को मॉक करने के लिए mockery का उपयोग करना शुरू कर दिया। फिर एक मॉडल के रूप में इसे बंद करने वाले प्रत्येक मॉडल के साथ अपना खुद का नकली मॉड्यूल बनाना। इन गुणों ने असली मॉडल लपेटे (ताकि परीक्षण के तहत कोड के लिए बाल गुण मौजूद हों)। और फिर मैं उन विधियों को ओवरराइड करता हूं जिन्हें मैं सहेजने के लिए परीक्षण में हेरफेर करना चाहता हूं। मॉकिंग को पूर्ववत करने में सक्षम होने के कारण यह मजाकिया का लाभ था।

लेकिन ...

मैं वास्तव में नहीं है कि हर मॉडल के लिए आवरण गुण लिखने के लिए मजाक नाश के बारे में पर्याप्त परवाह है। तो अब मुझे बस अपने मॉड्यूल की आवश्यकता है और उन कार्यों को ओवरराइड करें जिन्हें मैं जोड़ना चाहता हूं। यदि यह कोई मुद्दा बन जाता है तो मैं शायद अलग प्रक्रियाओं में परीक्षण चलाऊंगा।

मेरी परीक्षणों के हिस्से की व्यवस्था में:

// mock out database saves 
var db = require("../../schema"); 
db.Model1.prototype.save = function(callback) { 
    console.log("in the mock"); 
    callback(); 
}; 
db.Model2.prototype.save = function(callback) { 
    console.log("in the mock"); 
    callback("mock staged an error for testing purposes"); 
}; 
+0

क्या आपने इसे नोडजेएस के साथ किया था? – bouncingHippo

+0

'schema.js' में क्या है? – Michelle

+0

@ मिशेल शायद सबसे अधिक मोंगोस स्कीमा परिभाषा – sshow

6

इसके अलावा उल्लेख के लायक:
mockgoose - इन-स्मृति डीबी कि नेवला का मजाक उड़ाता है, परीक्षण प्रयोजनों के लिए।
monckoose - इसी तरह, लेकिन एक अलग दृष्टिकोण लेता है (नकली ड्राइवर लागू करता है)। मोंकोस मार्च 2015 तक अप्रकाशित प्रतीत होता है।

+0

आपका दूसरा लिंक मर चुका है, ऐसा लगता है कि यह अप्रकाशित है। –

+0

@ केविनबी धन्यवाद, अपडेट किया गया –

संबंधित मुद्दे