简体   繁体   English

QUnit XMLHttpRequest测试

[英]QUnit XMLHttpRequest Test

I'm trying to create a test for function with XMLHttpRequest (with callback argument). 我正在尝试使用XMLHttpRequest (带有回调参数)为功能创建测试。 But it always return undefined . 但是它总是返回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://wrongDomain.wrong/server.php", "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. ret在这里始终是未定义的。 What i'm doing wrong? 我做错了什么?

I've found the answer! 我找到了答案!

 QUnit.test("Message Send XMLHttpRequest Test", function(assert) { assert.expect(5); var done = []; for (var i = 0; i < 5; i++) { done[i] = assert.async(); }; sendMessage("server.php", "Hello Text Message", function(responseText) { assert.equal(responseText, "Message Correct", "Sending normal message"); done[0](); }); sendMessage("server.php", "<script>Message with Tags<script>", function(responseText) { assert.equal(responseText, "Message Error", "Sending message with tags"); done[1](); }); sendMessage("wrong.php", "Hello Text Message", function(responseText) { assert.equal(responseText, "404", "Requesting wrong server file"); done[2](); }); sendMessage("http://wrongDomain.wrong/server.php", "Hello Text Message", function(responseText) { assert.equal(responseText, "0", "Requesting wrong server(or server has no answer)"); done[3](); }); sendMessage("otherCode.php", "Hello Text Message", function(responseText) { assert.equal(responseText, "Other Code", "Request returns other code"); done[4](); }); }); 

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM