2016-12-07 21 views
9

Tôi có một trường hợp thử nghiệm FuncUnit trong đó tôi mở một trang web bằngLàm thế nào để ngăn chặn các lỗi đơn vị FuncUnit trong các thử nghiệm?

F.open("http://www.example.com"); 

Có một vấn đề được biết đến trong trang của chúng tôi rằng khoảng một trong khoảng 20 lần so với trang web sẽ không tải vì lý do gì. Tôi muốn thử lại khi nó không tải. Nhưng trong FuncUnit không có cách nào để ngăn chặn lỗi nếu nó không tải trang. Có cách nào để ngăn chặn thông báo lỗi trong Funcunit?

+0

Tôi ngạc nhiên là bạn có thể mở một URL từ xa. Tôi vừa thử 'F.open ('https://www.google.com')' và gặp lỗi. Tôi không nghĩ rằng 'F.open()' là dành cho các URL từ xa vì bạn không thể tương tác với bất kỳ DOM nào. Bạn đang thử nghiệm chính xác cái gì? –

+0

@Ryan Nó thực sự không phải là url từ xa. Đó là url địa phương. Tôi chỉ đưa example.com làm ví dụ. – Sathish

+0

Ah, ok. Dường như bạn đã tìm thấy một giải pháp, mặc dù bị hack. Bạn có thể cung cấp một bộ tệp tối thiểu để tái tạo vấn đề này không? Điều này nghe giống như một lỗi mà cần phải được cố định. –

Trả lời

0

Không thể có nội dung nào phù hợp với bạn?

module("test", { 
    setup: function() { 
    let startMeUp =() => F.open('http://www.example.com'); // unfortunately doesn't return a usable value 
    let checkCondition =() => { 
     // grab F(F.window), and check for a known element in the page 
     return elementFound; 
    }; 
    while(!checkCondition()) { 
     // element wasn't found, so let's try it again 
     startMeUp(); 
     // maybe set a wait here 
    } 
    } 
}); 
+0

Điều này sẽ không hoạt động. nếu F.open không mở, nó không thành công. – Sathish

0
var url = "http://www.example.com" 
F.get(url, function(data){ 
    console.log("Made an ajax call to make sure that F.open is always second call"); 
}) 
// Wait for few seconds before making the actual F.open 
F.wait(5000,function(){ 
    F.open(url); 
}) 

Bất cứ khi nào F.open không (ví dụ như trong một trong số 20 lần) tôi nhận thấy rằng các điểm thử nghiệm thứ hai sử dụng F.open passes.However tôi không thể làm F.open một lần nữa trong trường hợp đầu tiên một không hoạt động như không có cách nào để ngăn chặn lỗi F.open khi trang không tải.

Vì vậy, tôi luôn thực hiện cuộc gọi ajax đơn giản trước khi thực hiện F.open thực tế. Đây không phải là cách đúng để thực hiện nhưng nó hoạt động với chúng tôi vì chúng tôi không thực sự quan tâm liệu trang có tải thời gian đầu tiên/thứ hai trong các thử nghiệm của chúng tôi hay không.

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