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":[]}
Était-ce utile?

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
scroll top