Sinon.js fakeServer pas de tir rappel avec méthode de réaction
-
28-10-2019 - |
Question
Je suis en train de se moquer de la réponse du serveur pour une demande de POST
en utilisant Sinon.js. Il semble fonctionner très bien sauf que c'est ne se déclenche pas le rappel de succès.
# In the Exercise model:
submit: (query) ->
callback = (data) -> alert(data)
$.post(@url(), { query: query }, callback)
# In the Exercise spec:
beforeEach ->
@server = sinon.fakeServer.create()
@server.respondWith('POST', @exercise.url(),
[ 200, { "Content-Type": "application/json" },
'[{ correct: true, result_set: {} }' ])
@exercise.submit('select * from students')
# passes
it "request is a POST", ->
expect(@server.requests[0].method).toEqual('POST')
# passes
it "submits to the correct url", ->
expect(@server.requests[0].url).toEqual(@exercise.url())
it "fires the callback", ->
@server.respond()
# no callback fired! but if I inspect the server object I can see that
# the queue is empty, and the response is properly attached to the request object.
# see the state below
# State of the Server object
{"requests":[
{"readyState":4,
"requestHeaders":
{"Content-Type":"application/x-www-form-urlencoded;charset=utf-8",
"Accept":"*/*",
"X-Requested-With":"XMLHttpRequest"},
"requestBody":"query=select+*+from+students",
"status":200,
"statusText":"OK",
"method":"POST",
"url":"exercises/some_id",
"async":true,
"responseText":"[
{ correct: true,
result_set:
{} }",
"responseXML":null,
"sendFlag":true,
"errorFlag":false,
"responseHeaders":
{"Content-Type":"application/json"}}],
"responses":[
{"method":"POST",
"url":"exercises/some_id",
"response":[200,
{"Content-Type":"application/json"},"[
{ correct: true,
result_set:
{} }"]}],
"queue":[]}
La solution
Il déclenche le rappel d'erreur parce que votre JSON est invalide: '[{ correct: true, result_set: {} }'
Essayez d'utiliser http://jsonlint.com/ vérifiez vos réponses, ou l'utilisation JSON.stringify
, alors vous ne devez pas vous inquiéter à ce sujet.
Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow