2013-07-24 26 views
7

Tôi muốn viết thông số yêu cầu xác minh việc tải và thực thi javascript trên một trang nhất định mà không có bất kỳ lỗi nào.Capybara: Thử nghiệm JavaScript chạy mà không có lỗi

Tôi biết tôi có thể thêm nội dung nào đó vào DOM ở cuối tệp JavaScript và xác nhận sự hiện diện của nội dung này, nhưng điều đó giống như hack và buộc tôi gây ô nhiễm mã của mình vì lý do kiểm tra. Tôi muốn làm một cái gì đó dọc theo dòng.

visit some_path 
page.should succesfully_run_javascript 
+0

Câu hỏi hay. Tôi cũng đang chờ câu trả lời. – Kvass

+0

tôi đoán những gì bạn nên xem xét là một khuôn khổ thử nghiệm javascript như qUnit. bạn có thể xác định các thử nghiệm trong đó và sau đó sử dụng capybara để tự động chạy thử nghiệm. hoa nhài là một lựa chọn khác. – phoet

+0

Có một đoạn javascript cụ thể nào mà bạn có thể kiểm tra không? Ví dụ, nếu nó tạo ra một phần tử DOM, bạn có thể kiểm tra rằng phần tử tồn tại. – Rebitzele

Trả lời

3

Một cách đó là có khả năng không phải là rất gây ô nhiễm là để thu thập bất kỳ lỗi bằng cách thêm một cái gì đó như thế này để đầu (ghi nhớ này sẽ ghi đè lên bất kỳ xử lý onerror bạn có thể đã có):

<script> 
    window.errors = []; 
    window.onerror = function(error, url, line) { 
     window.errors.push(error); 
    }; 
</script> 

Bạn sau đó có thể làm điều gì đó như:

page_errors = page.evaluate_script('window.errors') 

và xác nhận trên mảng trống. Bạn có thể xuất ra các lỗi khác ...

Lưu ý: Điều quan trọng là thêm tập lệnh vào đầu (có khả năng là tập lệnh scriptlet/script đầu tiên) vì nó cần phải là một tập lệnh được thực thi đầu tiên.

4

Bạn có thể đạt được điều này với đoạn mã sau trong bài kiểm tra của mình.

page.driver.console_messages.each { |error| puts error } 
expect(page.driver.console_messages.length).to eq(0) 

Dòng đầu tiên in ra lỗi, thuận tiện để xem điều gì đang diễn ra. Dòng thứ hai làm cho thử nghiệm thất bại.

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