Mam aplikację sieci Web, która nieprzerwanie odpytuje na dane z serwera przy użyciu żądań Ajax. Chciałbym zaimplementować test integracji za pomocą zombie.js.Jak korzystać z browser.wait() w zombie.js?
Próbuję poczekać, aż pętla anonimowa otrzyma dane z serwera. Dane powinny zostać odebrane po 20 sekundach, więc używam browser.wait(done, callback)
, aby sprawdzić, czy dane tam są, i ustawić waitFor
na maksymalny limit czasu wynoszący jedną minutę.
Jednak browser.wait()
zawsze zwraca prawie natychmiast, nawet jeśli mój callback zwrotny done
zwraca wartość false.
W zombie API documentation, czytałem o browser.wait()
następujące:
... to nie może czekać w nieskończoność, zwłaszcza nie dla timerów, które mogą ogień wielokrotnie (na przykład sprawdzanie stanu strony, długo odpytywania).
Sądzę, że to jest powód zachowania, które widzę, ale tak naprawdę nie rozumiem, co się dzieje. Dlaczego nie mogę poczekać minutę, dopóki moja pętla ankietowa nie odbierze danych z serwera? Dlaczego browser.wait()
nie może czekać na zegary, które mogą wielokrotnie strzelać? Co muszę zrobić, aby wdrożyć mój test?
Czy odkryłeś coś nowego w tej sprawie? –
Po prostu upewnij się, że używasz milisekund dla 'waitFor', prawda? Mówię o doświadczeniu;) Nie zapomnij też o 'maxWait'. – robertklep
"ciągłe ankiety dla danych z serwera" - jeśli masz nad tym kontrolę, 'socket.io' będzie doskonałą alternatywą – jcollum