2012-12-20 4 views
7

Ich habe ein Remote-Formular, das die Schaltfläche zum Senden deaktiviert, während die AJAX-Anfrage in Bearbeitung ist. Ich würde gerne überprüfen, ob, wenn ich betonen, klicken Sie auf die Schaltfläche, keine anderen AJAX-Anfragen werden gemacht. Wie kann ich dies in einem Integrationstest überprüfen?Wie kann ich die Anzahl der AJAX-Anrufe in einem Integrationstest überprüfen?

+0

Es ist kein automatisierter Test, aber Sie können leicht auf die Anfragen mit Firefox und dem [Firebug Addon] (http://getfirebug.com/) überprüfen –

Antwort

4

können Sie aktiv Ajax-Aufrufe prüfen mit jquery

$.active 

Wenn Sie Capybara für Integrationstests

page.evaluate_script('$.active').should be <= 1 

könnte sein, eine Lösung verwenden.

Wie Sie wahrscheinlich wissen nicht, wann Anrufe eine Hilfsfunktion könnte der Trick

def test_until(seconds=5) 
    start_time = Time.now 
    while (Time.now - start_time) <= seconds do 
    yield 
    sleep 0.05 
    end 
end 

wich wie diese

aufgerufen werden können auftreten
test_until do 
    page.evaluate_script('$.active').should be <= 1 
end 

für Sie testen, also 5 Sekunden, wenn es sind immer mehr als ein aktiver Ajax-Aufruf

1

Behalten Sie eine globale oder eine statische Variable. Inkrementiere die Variable innerhalb der von Ajax aufgerufenen Funktion und prüfe, was der Wert deiner Variablen sein wird. Es sollte niemals einen Wert überschreiten, um sicherzustellen, dass Ajax nur einmal aufgerufen wird.

Wenn Sie auf automatisierte Tests sind, erhalten Sie hier weitere Informationen zur Überprüfung der Anzahl der aktiven Ajax-Anrufe und anderer Daten.

http://hedleyproctor.com/2012/07/effective-selenium-testing/

Hoffnung, das hilft. Vielen Dank.

Verwandte Themen