2016-04-12 14 views
5

Tôi mới vào các trường hợp thử nghiệm hoa nhài Tôi cố gắng để làm trường hợp thử nghiệm hoa nhài cho module lựa chọn sau khi làm sở hữu phong cách này hiển thị không có css là nhận được xác địnhLàm thế nào để làm trường hợp thử nghiệm hoa nhài cho bất động sản sử dụng documet.getElementById và 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'; 

    }; 

testcase của tôi là

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'); 

    }); 
}); 

Sau khi thực hiện này tôi geting và loại bỏ mã để beforEach

TypeError: Cannot read property 'style' of undefined

hãy sửa tôi nếu tôi đã làm sai

+0

thuộc tính 'style' bạn đã sử dụng quá nhiều thời gian? tại nơi lỗi này thực sự đến? –

+0

@VikrantKashyap nó ('mở rộng chi tiết chuyến bay một phần', chức năng() { flightselection.expandFlightDetails(); mong đợi (document.body.getElementsByClassName ('flight-details-container') [0] .style.display). toEqual ('none'); }); cho trường hợp kiểm tra này, tôi nhận được lỗi này –

+0

Bạn có bao gồm tệp html có yếu tố với lớp "chi tiết chuyến bay-container" hay không. ? – rajesh

Trả lời

5

Bạn có một vài lỗi trên mã này.

đầu tiên trong Selection.prototype.expandFlightDetails chắc chắn để có được những kết quả đầu tiên của mảng (bạn quên [0]):

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

Cùng bình luận cho Selection.prototype.hideFlightDetails

Sau đó, trong bộ kiểm tra của bạn, bạn tạo một đối tượng Selection tên selection nhưng sau đó trong cả hai bài kiểm tra bạn đang sử dụng một biến gọi là flightselection được khai báo hư không. Chẳng phải nó sẽ là selection thay vào đó?

Cuối cùng vấn đề của bạn có vẻ là bạn cố gắng thao tác 'flight-details-container' trong thử nghiệm của mình, mặc dù phần tử này được tạo trên cuộc gọi lại afterEach. afterEach có nghĩa là điều này sẽ được thực thi sau mỗi lần kiểm tra, vì vậy nó không tồn tại trong quá trình thử nghiệm.

+0

Tôi đã chỉnh sửa mã vẫn còn nhận được cùng một lỗi. Ngoài ra tôi đã gỡ bỏ mã từ aftereach để beforeach để mỗi trường hợp kiểm tra mã sẽ thực thi Hãy sửa tôi nếu tôi sai. –

+0

Bạn chưa sửa expandFlightDetails và hideFlightDetails. 'getElementsByClassName' trả về một mảng vì vậy bạn cần phải chọn mục đầu tiên' [0] ' – floribon

+0

không nên kiểm tra nếu' getElementsByClassName' trả về ít nhất một phần tử và sau đó chọn phần tử đầu tiên? – Pietro

Các vấn đề liên quan