2014-05-02 9 views
9

में तत्व ऊंचाई सेट करें फ़ैंटॉमजेएस में परीक्षण करते समय मैं तत्व ऊंचाई कैसे सेट करूं?फ़ैंटॉमजेएस

मैं जैस्मीन ढांचे का उपयोग करके कर्म पर परीक्षण कर रहा हूं और फैंटॉमजेएस हेडलेस ब्राउज़र पर चल रहा हूं। मैं "अनंत स्क्रॉलिंग" से संबंधित एक एंगुलरजेएस निर्देश का परीक्षण करने की कोशिश कर रहा हूं (जब उपयोगकर्ता कंटेनर तत्व के नीचे स्क्रॉल करता है तो आइटम की स्वचालित लोडिंग)। मैं नहीं jQuery का उपयोग कर रहा हूं, और न ही मैं चाहता हूं (जब तक कोई अन्य रास्ता न हो)। मैं का उपयोग कर रहा हूं .clientHeight, .scrollTop, और .scrollHeight गुण। मेरा निर्देश कम से कम क्रोम में अपेक्षित काम करता है।

मैंने अपने निर्देश के लिए एक परीक्षण स्थापित करने का प्रयास किया, लेकिन मुझे गैर-शून्य ऊंचाई के साथ तत्व बनाने का कोई तरीका नहीं मिला। निम्नलिखित कोड मुझे कोई खुशी नहीं देता है:

describe('something', function() { 
    it('works with element height', inject(function ($document) { 
     var el = angular.element('<div>Lorem ipsum...</div>')[0]; 
     $document.append(el); 
     // size of non-empty block element should be non-zero by default 
     expect(el.clientHeight).not.toBe(0); 
     expect(el.scrollHeight).not.toBe(0); 
     // it should certainly be non-zero after the height is set manually 
     el.style.height = '999px'; 
     expect(el.clientHeight).not.toBe(0); 
     expect(el.scrollHeight).not.toBe(0); 
    })); 
}); 

मैं क्या गलत कर रहा हूं? क्या ऐसा करना संभव है जो मैं करने की कोशिश कर रहा हूं?

लघु उत्तर

ठीक element.style.height काम करता है का उपयोग कर तत्व ऊंचाई की स्थापना। मैंने दस्तावेज़ निकाय में तत्व को सही ढंग से संलग्न नहीं किया है।

उत्तर

6

मुझे लगता है कि समस्या $ दस्तावेज़ के साथ है। आपको कौन सा दस्तावेज़ परिभाषित करना होगा और शरीर तत्व ढूंढना होगा और उससे जुड़ा होना चाहिए। यह कोड अब मेरे लिए फैंटॉमजेएस में गुजरता है।

it('works with element height', inject(function ($document) { 
    var el = angular.element('<div>Lorem ipsum...</div>')[0]; 

    //Find the correct body element 
    angular.element($document[0].body).append(el); 

    // size of non-empty block element should be non-zero by default 
    expect(el.clientHeight).to.not.equal(0); 
    expect(el.scrollHeight).to.not.equal(0); 
    // it should certainly be non-zero after the height is set manually 
    el.style.height = '999px'; 
    expect(el.clientHeight).to.not.equal(0); 
    expect(el.scrollHeight).to.not.equal(0); 
})); 
+0

धन्यवाद! मैंने सोचा कि यह एक जटिल समस्या है और यहां यह सिर्फ एक साधारण मुर्गा था :) – hon2a

+0

इसके लिए बहुत बहुत धन्यवाद! – fiznool

+0

@fiznool यह काम नहीं कर रहा क्लाइंट हैइट हमेशा शून्य होता है। ? –

0

तुम भी JqLite के उपयोग के पूरी तरह निकाल दें और कच्चे डोम तरीकों का उपयोग कर सकते हैं ...

var el = document.createElement('div'); 
el.textContent = "Lorem ipsum..."; 

document.body.appendChild(el); 

...

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