Ich versuche Jasmine zu verwenden, um einige BDD-Spezifikationen für grundlegende jQuery AJAX-Anforderungen zu schreiben. Ich verwende Jasmine derzeit im Standalone-Modus (d. H. Über SpecRunner.html
). Ich habe SpecRunner konfiguriert, um jquery und andere .js Dateien zu laden. Irgendwelche Ideen, warum das Folgende nicht funktioniert? has_returned wird nicht wahr, dachte sogar das "Yuppi!" Alarm zeigt sich gut.Wie überprüfe ich jQuery AJAX Ereignisse mit Jasmine?
describe("A jQuery ajax request should be able to fetch...", function() {
it("an XML file from the filesystem", function() {
$.ajax_get_xml_request = { has_returned : false };
// initiating the AJAX request
$.ajax({ type: "GET", url: "addressbook_files/addressbookxml.xml", dataType: "xml",
success: function(xml) { alert("yuppi!"); $.ajax_get_xml_request.has_returned = true; } });
// waiting for has_returned to become true (timeout: 3s)
waitsFor(function() { $.ajax_get_xml_request.has_returned; }, "the JQuery AJAX GET to return", 3000);
// TODO: other tests might check size of XML file, whether it is valid XML
expect($.ajax_get_xml_request.has_returned).toEqual(true);
});
});
Wie kann ich testen, dass der Rückruf aufgerufen wurde? Alle Hinweise auf Blogs/Material zum Testen von asynchronen jQuery mit Jasmine werden sehr geschätzt.
Dank @jasminebdd, die Jasmin-Ajax-Projekt sieht aus wie die Art und Weise zum Testen meine js Code zu gehen. Aber was, wenn ich mit tatsächlichen Anforderungen an den Server testen wollte, z. für Konnektivitäts-/Integrationstests? – mnacos
@mnacos Jasmine-Ajax ist vor allem nützlich für Komponententests, in denen Sie den Aufruf an den Server speziell vermeiden möchten. Wenn Sie Integrationstests durchführen, ist dies wahrscheinlich nicht das, was Sie wollen und sollte als separate Teststrategie entworfen werden. –