2016-12-07 4 views
9

Ich habe einen FuncUnit Testfall, wobei ich eine Webseite öffnenWie können FuncUnit Unit-Fehler in Tests unterdrückt werden?

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

Verwendung Es ist ein bekanntes Problem in unserer Seite, die man etwa in etwa 20 mal die Webseite aus irgendeinem Grunde nicht geladen werden würde. Ich möchte es erneut versuchen, wenn es nicht geladen wird. Aber in FuncUnit gibt es keine Möglichkeit, Fehler zu unterdrücken, wenn die Seite nicht geladen werden kann. Gibt es eine Möglichkeit, eine Fehlermeldung in Funcunit zu unterdrücken?

+0

Ich bin überrascht, Sie können eine Remote-URL überhaupt öffnen. Ich habe gerade 'F.open ('https://www.google.com')' versucht und einen Fehler erhalten. Ich glaube nicht, dass 'F.open()' für entfernte URLs gedacht ist, da Sie sowieso nicht mit dem DOM interagieren können. Was genau testen Sie genau? –

+0

@Ryan Es ist eigentlich nicht Remote-URL. Es ist eine Localhost-URL. Ich habe example.com als Beispiel angegeben. – Sathish

+0

Ah, ok. Es scheint, als hättest du eine Lösung gefunden, aber hacky. Wären Sie in der Lage, einen minimalen Satz von Dateien zur Verfügung zu stellen, um dieses Problem zu reproduzieren? Das klingt wie ein Fehler, der behoben werden muss. –

Antwort

0

Konnte so etwas nicht für Sie arbeiten?

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

Das würde nicht funktionieren. Wenn F.open nicht geöffnet wird, schlägt der Test fehl. – 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); 
}) 

Wenn F.open ausfällt (dh während eines von 20 mal) Ich bemerkte, dass der zweite Testpunkt, den F.open passes.However verwendet ich nicht F.open wieder tun kann, falls die ersten es funktioniert nicht, da es keine Möglichkeit gibt, den F.open-Fehler zu unterdrücken, wenn die Seite nicht geladen wird.

Also mache ich immer einen einfachen Ajax-Aufruf, bevor ich das eigentliche F.open mache. Dies ist nicht der richtige Weg, aber es funktioniert für uns, da es uns eigentlich egal ist, ob die Seite in unseren Tests eine erste/zweite Zeitladung ist.

Verwandte Themen