Ich habe eine JavaScript-Funktion, die eine Post an eine Remote-API schreibt, die ich gerade schreibe, um einen Komponententest zu schreiben. Die Methode, die ich testen möchten, ist dies:QUnit, Sinon.js - Wie stelle ich sicher, dass Post to Fake Server den richtigen Anfragetext hat?
var functionToTest = function(callback, fail) {
$.ajax({
url: "/myapi/",
type: "POST",
data: { one: 'one', two: 'two' },
accept: "application/json",
contentType: "application/json"
}).done(function(x) {
log = generateLogMessage('Success');
callback(log);
}).fail(function(x, s, e) {
log = generateLogMessage('Fail');
fail(log);
});
}
ich einen Komponententest haben (in QUnit Nutzung Sinon.js), die prüft, ob der Rückruf korrekt aufgerufen wird, wenn die Anforderung erfolgreich ist:
QUnit.test('Test that the thing works', function() {
var server = this.sandbox.useFakeServer();
server.respondWith(
'POST',
'/myapi/',
[
200,
{'Content-Type': 'application/json'},
'{"Success":true}'
]
);
var callback = this.spy();
functionToTest(callback, callback);
server.respond();
QUnit.ok(callback.calledWith(generateLogMessage('Success')));
});
Diese Test funktioniert, aber es wird erfolgreich zurückgegeben, unabhängig davon, was der Anfragetext ist. Was ich tun möchte, ist nur der Fake-Server antworten, wenn der Anfragekörper ist { one: 'one', two: 'two' }
Danke, ich denke, ich werde weiter machen, was ich gerade mache. – BeardedCoder