2015-02-06 15 views
7

तुलना नहीं कर सकते मैं जैस्मीन का उपयोग कर कोणीय में निर्देश परीक्षण का निर्माण कर रहा हूँ। मैं एक छोटा सा उदाहरण परीक्षण है जो इस तरह दिखता है:जैस्मीन के साथ कोणीय परीक्षण एचटीएमएल नोड

it("should compare html node", inject(function ($compile, $rootScope) { 
    var elm = angular.element('<input>'); 
    elm = $compile(elm)($scope); 
    $scope.$digest(); 
    console.log('btn', elm); // output: '<input class="ng-scope">' 
    expect(elm).toBe('<input class="ng-scope">'); 

    expect(elm[0]).toBe('<input class="ng-scope">'); // these also fail 
    expect(elm.html()).toBe('<input class="ng-scope">'); // "" 
})); 

तो मैं कंसोल के लिए उम्मीद उत्पादन मिलता है, लेकिन जैस्मीन एक त्रुटि Expected { length: 1, 0: HTMLNode } to be '<input class="ng-scope">'

मैं भी elm[0] जो एक ही त्रुटि देता है का उपयोग कर की कोशिश की है के साथ शिकायत और elm.html() लेकिन यह सिर्फ एक खाली स्ट्रिंग देता है। मैं स्ट्रिंग के साथ HTML नोड की तुलना कैसे कर सकता हूं?

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

+0

शायद एल्म [0] .outerHTML – hassassin

+0

वाह का उपयोग करना है! यह वास्तव में काम करता है। मैं इसे एपीआई (https://docs.angularjs.org/api/ng/function/angular.element) में दस्तावेज कर सकता हूं हालांकि। यदि आप इसे एक उत्तर में बनाना चाहते हैं तो मैं स्वीकार करूंगा। धन्यवाद। –

उत्तर

10

तो एल्म angular.element है जो एक jqLite ऑब्जेक्ट है। जैसा कि आप इंगित करते हैं कि आप वास्तविक डोम तत्व प्राप्त करने के लिए elm [0] का उपयोग कर सकते हैं। फिर आप .outerHTML फ़ील्ड तक पहुंचकर नोड के एचटीएमएल तक पहुंच सकते हैं। तो हमारा अंतिम समाधान

elm[0].outerHTML 
0

जब मेरे जैस्मीन परीक्षण कर रहा परीक्षण होगा element.html() तो मैं तो इस तरह

expect(element.html()).toContain($('input.ng-scope')); 

मैं गहराई में जाने और HTMLNode को HTMLNode तुलना के बारे में देखने की कोशिश लेकिन मेरा मानना ​​है कि था के रूप में विशिष्ट स्थितियों के लिए खोज करने के लिए jQuery का उपयोग कर सकते यह जैस्मीन की एक सीमा है। आप कोशिश कर सकते हैं,

expect(element[0]).toEqual($.parseHTML('<input class="ng-scope">')[0]) 

लेकिन जैस्मीन वापस "एचटीएमएल नोड के बराबर अपेक्षित HTMLNode" देता है। सबसे अच्छा तरीका यह है कि संकलित HTML तत्व को अलग-अलग परीक्षण मामलों के साथ ऊपर दिखाए गए अनुसार डीकोनस्ट्रक्चर करना है।

+0

element.html() कभी-कभी खाली स्ट्रिंग देता है, जहां एल्म [0] .उटरएचटीएमएल एचटीएमएल देता है – Hoto

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