Ich habe eine Webanwendung, die kontinuierlich Daten vom Server mit Ajax-Anfragen abfragt. Ich würde gerne einen Integrationstest dafür unter zombie.js implementieren.Wie benutze ich browser.wait() in zombie.js?
Ich versuche zu warten, bis die Ajax-Poll-Schleife Daten vom Server empfängt. Die Daten sollten nach 20 Sekunden empfangen werden, also verwende ich browser.wait(done, callback)
, um zu prüfen, ob die Daten da sind, und setze waitFor
auf ein maximales Zeitlimit von einer Minute.
browser.wait()
jedoch kehrt fast immer sofort zurück, auch wenn mein done
Callback false zurückgibt.
Im zombie API documentation las ich folgende über browser.wait()
:
... es nicht ewig warten kann, schon gar nicht für Timer, die wiederholt (zum Beispiel der Überprüfung Seite Zustand, langer Polling) abfeuern können.
Ich denke, das ist der Grund für das Verhalten, das ich sehe, aber ich verstehe nicht wirklich, was vor sich geht. Warum kann ich nicht eine Minute warten, bis meine Poll-Schleife Daten vom Server empfängt? Warum kann nicht browser.wait()
auf Timer warten, die wiederholt ausgelöst werden können? Was muss ich tun, um meinen Test zu implementieren?
Haben Sie etwas Neues darüber entdeckt? –
Nur um sicher zu gehen: Sie verwenden Millisekunden für 'waitFor', richtig? Ich spreche von Erfahrung;) Vergessen Sie auch nicht 'maxWait'. – robertklep
"fragt ständig nach Daten vom Server" - wenn Sie die Kontrolle darüber haben, wäre "socket.io" eine ausgezeichnete Alternative – jcollum