samedi 23 mai 2015

QUnit XMLHttpRequest Test

I'm trying to create a test for function with XMLHttpRequest(with callback argument). But it always return undefined.

function sendMessage(serverFile, data, retVal) {
  var xhr = new XMLHttpRequest();

  xhr.open('POST', serverFile, true);
  xhr.setRequestHeader("Content-Type", "application/x-www-form-urlencoded");

  xhr.onreadystatechange = function() {
    if (xhr.readyState == 4) {
      switch (xhr.status) {
        case 200:
          retVal(xhr.responseText);
          break;
        case 404:
          retVal("404");
          break;
        case 0:
          retVal("0");
          break;
        default:
          retVal("Other Code");
      }
    }
  }

  xhr.send("data="+data);
}

All server files are fine.

This is Test Script.

QUnit.test("Message Send XMLHttpRequest Test", function(assert) {
  assert.expect(5);
  var done1 = assert.async();
  var done2 = assert.async();
  var done3 = assert.async();
  var done4 = assert.async();
  var done5 = assert.async();

  window.setTimeout(function() {
    var ret;
    sendMessage("server.php", "Hello Text Message", function(responseText) {
      ret = responseText;
    });
    assert.equal(ret, "Message Correct", "Sending normal message");
    done1();
  }, 0);

  window.setTimeout(function() {
    var ret;
    sendMessage("server.php", "<script>Message with Tags<script>", function(responseText) {
      ret = responseText;
    })
    assert.equal(ret, "Message Error", "Sending message with tags");
    done2();
  }, 100);

  window.setTimeout(function() {
    var ret;
    sendMessage("wrong.php", "Hello Text Message", function(responseText) {
      ret = responseText;
    })
    assert.equal(ret, "404", "Requesting wrong server file");
    done3();
  }, 100);

  window.setTimeout(function() {
    var ret;
    sendMessage("http://ift.tt/1F7NNvb", "Hello Text Message", function(responseText) {
      ret = responseText;
    })
    assert.equal(ret, "0", "Requesting wrong server(or server has no answer)");
    done4();
  }, 100);

  window.setTimeout(function() {
    var ret;
    sendMessage("otherCode.php", "Hello Text Message", function(responseText) {
      ret = responseText;
    })
    assert.equal(ret, "Other Code", "Request returns other code");
    done5();
  }, 100);
});

Here ret is always undefined. What i'm doing wrong?




Aucun commentaire:

Enregistrer un commentaire