2016-04-12 3 views
5

Ich bin neu in dem Jasmin Testfall habe ich versucht zu tun, Jasmin Testfall für die Auswahlmodul zu tun, nachdem diese Art Eigenschaft zu tun ist immer undefiniertWie Jasmin Testfall für die Anzeige keine CSS-Eigenschaft mit documet.getElementById und getElementsByClassName

function Selection() { 

    } 
    Selection.prototype.expandFlightDetails = function() { 

     document.getElementsByClassName("flight-details-container").style.display = 'none'; 
     document.getElementById("expandedFlightDetails").style.display = 'block'; 
    }; 
    Selection.prototype.hideFlightDetails = function() { 
     document.getElementById("expandedFlightDetails").style.display = 'none'; 
     document.getElementsByClassName("flight-details-container").style.display = 'block'; 

    }; 

Mein Testfall ist

describe("selection module", function() { 
    var selection; 

    beforeEach(function() { 
     selection= new Selection(); 

    }); 
    afterEach(function() { 

    }); 
    it('expand the flight details part ' , function(){ 
     selection.expandFlightDetails(); 
     expect(document.body.getElementsByClassName('flight-details-container')[0].style.display).toEqual('none'); 

    }); 
    xit('hide the flight details part ', function(){ 
     selection.hideFlightDetails(); 
     expect(document.getElementById('expandedFlightDetails').style.display).toEqual('none'); 

    }); 
}); 

Nachdem Sie das getan ich bin geting und entfernt Code

TypeError: Cannot read property 'style' of undefined

beforEach

Bitte korrigieren Sie mich, wenn ich falsch gemacht habe

+0

'Stil'-Eigenschaft, die Sie so oft verwendet haben? wo dieser Fehler tatsächlich kam? –

+0

@VikrantKashyap it ('erweitern Sie den Flug Details Teil', Funktion() { flightselection.expandFlightDetails(); expect (document.body.getElementsByClassName ('Flug-Details-Container') [0] .style.display). toEqual ('none'); }); Für diesen Testfall erhalte ich diesen Fehler –

+0

Sind Sie die HTML-Datei, die Element mit der Klasse "Flug-Details-Container" enthält. ? – rajesh

Antwort

5

Sie haben ein paar Fehler in diesem Code.

Zuerst in Selection.prototype.expandFlightDetails sicherstellen, dass das erste Ergebnis des Arrays erhalten (vergessen Sie die [0]):

document.getElementsByClassName("flight-details-container")[0] 

Same Kommentar für Selection.prototype.hideFlightDetails

Dann in Ihrer Testsuite Sie eine Auswahl Instanz erstellen benannt selection aber in beiden Tests verwenden Sie eine Variable namens flightselection, die nirgendwo deklariert wird. Sollte es nicht selection stattdessen sein?

Schließlich scheint Ihr Problem zu sein, dass Sie versuchen, 'flight-details-container' in Ihrem Test zu manipulieren, obwohl dieses Element auf dem afterEach Rückruf erstellt wird. afterEach bedeutet, dass dies nach jedem Test ausgeführt wird, so dass es während des Tests nicht existiert.

+0

Ich habe den Code bearbeitet immer noch bekomme ich den gleichen Fehler.Auch habe ich den Code von Aftereach nach vorach entfernt, so dass jeder Testfall der Code ausgeführt wird Bitte korrigieren Sie mich, wenn ich falsch liege. –

+0

Sie haben expandFlightDetails und hideFlightDetails nicht korrigiert. 'getElementsByClassName' gibt ein Array zurück, so dass Sie das erste Element' '012' ' – floribon

+0

auswählen müssen, sollte er nicht überprüfen, ob' getElementsByClassName' mindestens ein Element zurückgibt und dann das erste auswählt? – Pietro

Verwandte Themen