2011-10-06 17 views
24

मैं एक js विजेट और पहले भाग बना रहा हूं स्क्रिप्ट जावास्क्रिप्ट चौड़ाई, (Google Analytics से उदाहरण) कुछ इस तरह जोड़ने के लिए है:परीक्षण डोम जैस्मीन परीक्षा में जोड़ तोड़

(function() { 
    var ga = document.createElement('script'); ga.type = 'text/javascript'; ga.async = true; 
    ga.src = ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') + '.google-analytics.com/ga.js'; 
    var s = document.getElementsByTagName('script')[0]; s.parentNode.insertBefore(ga, s); 
})(); 

कैसे यह चमेली के साथ परीक्षण करने के लिए (फिक्स्चर का उपयोग कर?)?

+0

के संभावित डुप्लिकेट [कैसे इकाई (चमेली) के साथ परीक्षण डोम हेरफेर करने के लिए] (http://stackoverflow.com/questions/16163852/how-to-unit -स्टेस्ट-डोम-मैनिपुलेशन-साथ-जैस्मीन) – Gajus

उत्तर

3

जैस्मीन के साथ भारी डोम परीक्षण के लिए आप Jasmine Headless WebKit का उपयोग कर सकते हैं।

+3

रूबी को संचालित करने की आवश्यकता है? – LeeGee

+1

हाँ, यह एक मणि है – bjornd

4

मुझे लगता है आप अपनी कार्रवाई प्रदर्शन कर सकता है, तो जैसे पहले स्क्रिप्ट टैग पर href की जाँच करें:

function addGA(){ 
    var ga = document.createElement('script'); 
    ga.type = 'text/javascript'; ga.async = true; 
    ga.src = 
     ('https:' == document.location.protocol ? 'https://ssl' : 'http://www') 
     + '.google-analytics.com/ga.js'; 
    var s = document.getElementsByTagName('script')[0]; 
    s.parentNode.insertBefore(ga, s); 
}; 

जैस्मीन कल्पना:

var href = 'http://www.google-analytics.com/ga.js'; 
expect(document.getElementsByTagName('script')[0].href).not.toEqual(href); 
addGa(); 
expect(document.getElementsByTagName('script')[0].href).toEqual(href); 

एक बेहतर तरीका सुनवाई में रुचि रखते हैं, हालांकि। जैस्मीन के साथ डोम की जांच करना हमेशा थोड़ा हैकी लगता है।

23

मेरी चश्मा में एचटीएमएल फिक्स्चर स्थापित करने के लिए, मैंने jasmine-fixture लिखा था। इसके साथ, आप इस तरह की चीजें कर सकते हैं:

var $foo, $input; 
beforeEach(function(){ 
    $foo = affix('.foo'); 
    # appends to the DOM <div class="foo"></div> 
    $input = $foo.affix('input[id="name"][value="Jim"]'); 
    # appends <input id="name" value="Jim"/> beneath the .foo div 

और बाद में, यह आपके बाद साफ हो जाएगा।

डोम की स्थिति के बारे में अपेक्षाओं के लिए, मैं jasmine-jquery का उपयोग करता हूं। यह नीचे से एक की तरह matchers की एक टन प्रदान करता है:

it('is named Jim', function(){ 
    expect($input).toHaveValue("Jim"); 
}); 
संबंधित मुद्दे