मैं बैकबोन और बैकबोन का उपयोग कर एक एकल पृष्ठ जावास्क्रिप्ट एप्लिकेशन लिख रहा हूं। मैरियनेट। मैं अपने कोड को व्यवस्थित करने और निर्भरताओं का प्रबंधन करने में सहायता के लिए एएमडी मॉड्यूल और RequJS का उपयोग कर रहा हूं। मैं टीडीडी/बीडीडी के लिए अपने परीक्षण ढांचे के रूप में Mocha का भी उपयोग कर रहा हूं।RequJS और Mocha के साथ Squire.js का उपयोग करते समय मैं वैश्विक लीक पेश करने से कैसे बचूं?
सब कुछ ठीक काम कर रहा था जब तक कि मैं Sinon.JS का उपयोग करके स्टब्स, मोजे और जासूसों को पेश नहीं करना चाहता था। बहुत सारी खोज के बाद, मैं test frameworks in the RequireJS wiki और Squire.js पर एक पृष्ठ पर आया, ऐसा लगता है कि यह मेरी आवश्यकताओं के अनुरूप होगा। हालांकि, जब मैं मॉड्यूल लोड करने के लिए Squire.js का उपयोग करने का प्रयास करता हूं, तो मोचा अचानक मॉड्यूल की निर्भरताओं के लिए वैश्विक रिसाव की रिपोर्ट करता है। यदि मैं Requ.JS का उपयोग कर सीधे मॉड्यूल लोड करता हूं तो कोई लीक रिपोर्ट नहीं की जाती है।
उदाहरण के लिए, निम्न परीक्षण कोड किसी भी लीक रिपोर्ट करने के लिए मोचा का कारण नहीं है:
define(['app/app'], function(app) {
describe('App', function() {
it('Should define a \'header\' region', function() {
expect(app.headerRegion).to.exist;
});
it('Should define a \'main\' region', function() {
expect(app.mainRegion).to.exist;
});
});
return {
name: "App"
};
});
हालांकि, इस प्रकार Squire.js उपयोग करने के लिए कोड में परिवर्तित करने jQuery, रीढ़ के लिए लीक रिपोर्ट करने के लिए मोचा का कारण बनता है, और Marionette (app.js की निर्भरता):
define(['Squire'], function(Squire) {
describe('App', function() {
var testContext = {};
beforeEach(function(done) {
testContext.injector = new Squire();
testContext.injector.require(['app/app'], function(app) {
testContext.app = app;
done();
});
});
it('Should define a \'header\' region', function() {
expect(testContext.app.headerRegion).to.exist;
});
it('Should define a \'main\' region', function() {
expect(testContext.app.mainRegion).to.exist;
});
});
return {
name: "App"
};
});
मैं क्या गलत कर रहा हूं? मैं पूरी तरह से परेशान हूं कि मोचा RequJS के साथ रिसाव की रिपोर्ट नहीं करता है लेकिन Squire.js के साथ करता है। मैंने स्क्वायर.जेएस से पहले, अन्य StackOverflow question on mocking RequireJS dependencies जैसे कस्टम फ़ंक्शन और testr.js में पाए गए कुछ अन्य समाधानों की भी कोशिश की और इसी तरह के परिणाम थे। आज तक, मैं एक उदाहरण खोजने में असमर्थ हूं जो मोचा, RequJS, और Sinon.JS का एक साथ उपयोग करता है।
मेरे पास placed my current code base on GitHub है यदि कुछ महत्वपूर्ण जानकारी है जो मैंने छोड़ी है या कुछ है। प्रश्न में परीक्षण test\spec\test.app.js में पाया जा सकता है।
किसी भी सहायता की बहुत सराहना की जाती है। मैं अपने परीक्षण सेटअप के साथ और वास्तव में मेरे ऐप पर काम करने के लिए पिछले बंदरगाह प्राप्त करना चाहता हूं। अग्रिम में धन्यवाद।