2016-12-07 12 views
9

Mam przypadek testowy FuncUnit którym mogę otworzyć strony internetowej przy użyciuJak tłumić błędy jednostek FuncUnit w testach?

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

Istnieje znany problem w naszej stronie, że około jedna na około 20 razy strona nie będzie załadować z jakiegoś powodu. Chcę spróbować ponownie, gdy się nie załaduje. Ale w FuncUnit nie ma sposobu na pomijanie błędów, jeśli nie uda się załadować strony. Czy istnieje sposób, aby ukryć komunikat o błędzie w Funcunit?

+0

Jestem zaskoczony, że możesz otworzyć zdalny adres URL w ogóle. Właśnie wypróbowałem 'F.open (" https://www.google.com ")' i otrzymałem błąd. Nie sądzę, że 'F.open()' jest przeznaczone dla zdalnych adresów URL, ponieważ i tak nie można interakcji z DOM. Co dokładnie testujesz? –

+0

@Ryan W rzeczywistości nie jest to zdalny adres URL. Jest to adres URL lokalnego hosta. Podałem przykład example.com. – Sathish

+0

Ah, ok. Wygląda na to, że znalazłeś rozwiązanie, chociaż jest ono hacky. Czy byłbyś w stanie zapewnić minimalny zestaw plików do odtworzenia tego problemu? To brzmi jak błąd, który musi zostać naprawiony. –

Odpowiedz

0

Czy coś takiego nie może ci pomóc?

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

To nie działa. jeśli F.open się nie otworzy, nie przejdzie testu. – 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); 
}) 

Ilekroć F.open nie powiedzie (czyli podczas jednego z 20 razy) Zauważyłem, że drugi punkt pomiarowy, który wykorzystuje F.open passes.However nie mogę zrobić F.open ponownie w przypadku pierwszego nie działa, ponieważ nie ma sposobu, aby wyłączyć błąd F.open, gdy strona nie ładuje się.

Zawsze wykonuję proste wywołanie ajaxowe, zanim wykonam właściwy F.open. Nie jest to właściwy sposób, ale działa to dla nas, ponieważ nie obchodzi nas, czy strona jest ładowana po raz pierwszy/drugi w naszych testach.