Sie erwähnen nicht viel darüber, welche Bibliotheken Sie verwenden, also werde ich einfach weitermachen und annehmen, dass Ihre ajax-Anfrage aus einer GET-Anfrage besteht, die jQuery verwendet.
Normalerweise wäre dies so etwas wie:
$.ajax({
url: 'http://server/populate_table',
data: {foo: 'bar'},
success: populate_table
});
Auch gehe ich davon aus, dass der Server das folgende Objekt {row: [1, 2, 3]}
Für den Anfang zurückkehren würden Sie die Ajax-Antwort verspotten müssen, da Sie nicht sein wollen Berufung auf Ihrem Server verfügbar sein. Die Verspottung, die Überprüfung von Parametern und gefälschte Rückgabe der Daten kann unter Verwendung eines Spion als solche erreicht werden:
var ajaxMock = spyOn($, 'ajax').andCallFake(function (options) {
expect(options.url).toEqual('http://server/populate_table');
expect(options.data.foo).toEqual('bar');
options.success({row: [1, 2, 3]};
});
Beachten Sie, wie oben Sie definieren Erwartungen über die URL und Daten, die vom Server empfangen werden sollte, bevor Rückruf mit dem Ergebnis aufrufen.
Schließlich müssen Sie sehen, ob Ihre Tabelle belegt war. Sie geben keine Informationen über die Daten oder die Tabelle, aber wieder raten, dass Sie jQuery verwenden, sollten Sie versuchen, jasmine-jquery. Mit ihm können Sie die Erwartungen an Ihr DOM leicht beschreiben, sehen Sie sich die erweiterten Dokumente an. Sobald Sie auf abrechnen, was Sie testen wollen, Ihren vollständigen Test wird ähnlich aussehen wie:
it('populates the table making a JSON call', function() {
var ajaxMock = spyOn($, 'ajax').andCallFake(function (options) {
expect(options.url).toEqual('http://server/populate_table');
expect(options.data.foo).toEqual('bar');
options.success({row: [1, 2, 3]};
});
$.ajax({
url: 'http://server/populate_table',
data: {foo: 'bar'},
success: populate_table
});
expect($('#mytable')).toExist();
// DOM specific expectations go here...
});
Auch bei Mocking Look & Stubbing, da Sie nicht den AJAX-Request tatsächlich Feuer möchten. Es gibt viele Bibliotheken für sie, wie diese: http://sinonjs.org/ (Ich habe das nicht benutzt, aber es sieht ziemlich ordentlich aus) – d2kagw
All die Spionage Sachen Sinon liefert ist in Jasmin glaube ich. Wir verwenden Methoden, die nur in Jasmin ausspionieren. Wir möchten, dass die Ajax-Anforderungen ausgelöst werden - der Punkt, an dem wir testen, ist genau nachzuahmen, was der Benutzer mit unserem Code erleben würde. – tkone