2013-04-25 6 views
25

मैं कर्म परीक्षण धावक (http://karma-runner.github.io/0.8/index.html) qunit (http://qunitjs.com) का उपयोग कर खेल रहा हूं। मैंने सफलतापूर्वक बनाया और सरल परीक्षण (100% जावास्क्रिप्ट) चलाया, लेकिन अब मैं डीओएम नोड्स के साथ बातचीत करने वाले कोड का परीक्षण करने के लिए एचटीएमएल फिक्स्चर का उपयोग करने की कोशिश कर रहा हूं। मैं इस तरह से उन्हें "फ़ाइलें" में घोषणा करके इन जुड़नार लोड करने में सक्षम हूँ:मैं कुनिट का उपयोग कर कर्म परीक्षण धावक के साथ HTML फिक्स्चर का उपयोग कैसे कर सकता हूं?

{pattern: 'fixtures/myfixture.html', watched: true, served: true, included: false} 

यह कर्म के सर्वर के द्वारा संचालित हो, लेकिन मुझे समझ नहीं आता कि कैसे मैं अपने डोम के लिए उपयोग कर सकते हैं :(

?

मान लें मेरी स्थिरता एक साधारण एचटीएमएल निम्न मार्कअप फ़ाइल है जिसमें दो:

<div id="container">hello world</div> 

मैं एक परीक्षण उस नोड (div) करने के लिए उपयोग कर सकते हैं कैसे लिख सकते हैं "दस्तावेज़" से संबंधित है " context.html "फ़ाइल" स्थिर "फ़ोल्डर के तहत जहां तक ​​मुझे पता है ... तो एचटीएम कहां है मेरे स्थिरता एल ??

+0

यहाँ मेरा उत्तर की जाँच करें: http://stackoverflow.com/questions/15214760/unit-testing- angularjs-directive-with-templateurl/16528985 # 16528985 –

उत्तर

23

मैं AngularJS का उपयोग नहीं कर रहा हूं ... मैंने जैस्मीन-jquery को अपनाने के द्वारा हल किया: https://github.com/velesin/jasmine-jquery (मैं केवल फिक्स्चर के लिए चमेली का उपयोग करता हूं, मेरे परीक्षण अभी भी कुनिट का उपयोग करके लिखे गए हैं)।

frameworks = ['qunit', 'jasmine']; 

    files = [ 

     JASMINE, 
     JASMINE_ADAPTER, 
     QUNIT, 
     QUNIT_ADAPTER, 

     // dependencies 
     {pattern: 'src/main/webapp/js/libs/jquery/jquery-1.8.3.js', watched: false, served: true, included: true}, 
     {pattern: 'src/test/js/lib/jasmine-jquery.js', watched: false, served: true, included: true}, 

     // fixtures 
     {pattern: 'src/test/js/**/*.html', watched: true, served: true, included: false}, 
     {pattern: 'src/test/js/**/*.json', watched: true, served: true, included: false}, 
     {pattern: 'src/test/js/**/*.xml', watched: true, served: true, included: false}, 

     // files to test 
     {pattern: 'src/test/js/**/*.js', watched: true, served: true, included: true} 
    ]; 
तो अपने परीक्षण फाइलों में

: मेरी विन्यास फाइल में मैं निम्नलिखित है

module("TestSuiteName", { 
    setup: function() { 
     var f = jasmine.getFixtures(); 
     f.fixturesPath = 'base'; 
     f.load('src/test/js/TestFixture.html'); 
    }, 
    teardown: function() { 
     var f = jasmine.getFixtures(); 
     f.cleanUp(); 
     f.clearCache(); 
    } 
}); 
+0

अच्छा काम दोस्त। क्या आपको अभी भी कॉन्फ़िगरेशन में जैस्मीन और JASMINE_ADAPTER की आवश्यकता है? – NickL

+8

इसे मेरे लिए काम करने के लिए मुझे "प्रीप्रोसेसर: {'**/*। Html': []}" जोड़ना पड़ा। यह HTML2js प्रीप्रोसेसर को हटाने के लिए जो कि मेरे लिए कर्म 0 में डिफ़ॉल्ट रूप से था।10 –

+0

[संबंधित GitHub मुद्दे कर्म में preprocessors के बारे में चर्चा] (https://github.com/karma-runner/karma/issues/788)। – jfroom

8

यदि आप AngularJS का उपयोग कर रहे हैं, तो आप html2js प्रीप्रोसेसर का उपयोग कर सकते हैं। उदाहरण के लिए यह कैसे करें https://github.com/vojtajina/ng-directive-testing पर है।

ये एचटीएमएल फाइल कर्म द्वारा परोसा जाता है, लेकिन उन्हें पृष्ठ में शामिल नहीं किया जाता है, इसलिए आपको उन्हें प्राप्त करना होगा - शायद एक्सएचआर अनुरोध के माध्यम से।

यहाँ एक समान पूर्वप्रक्रमक, कि एक जे एस स्ट्रिंग (कोणीय को तंग नहीं) में html फ़ाइल परिवर्तित करता है: https://github.com/karma-runner/karma-html2js-preprocessor आप देख सकते हैं कि E2E परीक्षण में इसका उपयोग करना: https://github.com/karma-runner/karma-html2js-preprocessor/tree/master/e2e-test

नोट: इस html2js पूर्वप्रक्रमक है कर्म 0.8 का हिस्सा नहीं है और प्लगइन्स केवल कर्म 0.9+ (वर्तमान में कैनरी चैनल में) के साथ काम करते हैं, इसलिए आपको कैनरी का उपयोग करना होगा (जिसमें बहुत सारे बदलाव हैं; -)) ...

+0

मैं भी कर्म के साथ डोम का परीक्षण करने में वास्तव में रूचि रखता हूं। क्या यह भविष्य में रिलीज में उपलब्ध होगा या क्या मुझे कामकाज की तलाश करनी चाहिए? मैं शायद इसके लिए कोणीय का उपयोग नहीं करूँगा ... – zigomir

+0

बस कर्म की कैनरी रिलीज का उपयोग करें (यह अंत में स्थिर हो जाएगा ;-) और कर्म-एचटीएमएल 2 जेएस-प्रीप्रोसेसर प्लगइन का उपयोग करें, जो AngularJS के लिए कस नहीं है। – Vojta

+1

एनपीएम पर कैनरी रिलीज कैसे स्थापित करें? बेवकूफ सवाल के लिए खेद है। –

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

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