2014-09-26 9 views
9

मैं अपने सेल यूनिट परीक्षणों के लिए डेटाबेस के रूप में 'सेल-मेमोरी' का उपयोग कर रहा हूं और आदर्श रूप से व्यक्तिगत परीक्षण के बाद संपूर्ण डेटाबेस को साफ़ करना चाहता हूं। क्या कोई तरीका है कि मैं पूरे डेटाबेस को छोड़ सकता हूं?पूरे सेल-मेमोरी डेटाबेस को छोड़ दें?

उत्तर

2

आप अपने डेटाबेस को पुनर्निर्माण (migrate: 'drop') प्रत्येक परीक्षण से पहले अपने सेल ऐप उठा सकते हैं। यहां एक उदाहरण दिया गया है:

Sails = require('sails/lib/app'); 
app = Sails(); 

var testConfig = { 
    environment: 'test', 
    port: 1337, 
    log: { 
     level: 'error' 
    }, 
    connections: { 
     testDB: { 
      adapter: 'sails-memory' 
     } 
    }, 
    connection: 'testDB', 

    //wipe/drop ALL my data and rebuild models every time 
    migrate: 'drop' 
}; 

beforeEach(function (done) { 
    // start sails app for tests 
    app.lift(testConfig, function (err, sails) { 
     done(err); 
    }); 
}); 

//tests... 
+1

'माइग्रेट करने की कोई आवश्यकता नहीं: ड्रॉप'; स्मृति एडाप्टर हर बार ताजा शुरू होता है! – sgress454

+0

@ sgress454 जानना अच्छा है :) – Victor

+0

मैंने इस बारे में सोचा था - लिफ्ट ऑपरेशन कितना महंगा है? वर्तमान में मेरे पास केवल कुछ परीक्षण हैं, लेकिन परीक्षणों की संख्या बढ़ने के कारण मुझे आश्चर्य होता है कि ओवरहेड धीमी गति से चलने वाले परीक्षण सूट में जोड़ता है या नहीं। आपका अनुभव क्या है? धन्यवाद! – HolySamosa

7

मुझे एक और तरीका मिल गया जो काम करता प्रतीत होता है। यह एक ऐसी घटना को उत्सर्जित करता है जो प्रत्येक परीक्षण से पहले ओर्म हुक को पुनः लोड करने के लिए कहता है। यदि मेमोरी डीबी का प्रयोग करते हैं, या 'ड्रॉप' माइग्रेट विकल्प के साथ डिस्क डीबी, यह वांछित पूरा करता है।

beforeEach((done) => { 
    "use strict"; 
    // Drops database between each test. This works because we use 
    // the memory database 
    sails.once('hook:orm:reloaded', done); 
    sails.emit('hook:orm:reload'); 
}); 
+0

मुझे लगता है कि यह अन्य डेटाबेस के साथ भी ठीक काम करता है। मोंगोड के साथ काम करता है। – paulodiovani

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