节点上Mocha中的XMLHttprequest
XMLHttprequest within Mocha on Node
我正在尝试使用节点xmlhttprequest。所以如果我真的喜欢这个
// f.js
(function()
XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest
xhr = new XMLHttpRequest()
xhr.open('GET', "http://url-bla-bla.json", true)
xhr.onreadystatechange = function(){
console.log("xhr "+JSON.stringify(xhr))
}
xhr.send()
)()
并将其称为node f
(假设Access-Control-Allow-Origin
不是http://url-bla-bla.json
链路的问题-它工作于
但如果我试着把同样的东西包进Mocha规格的
describe('foo',function(){
it('xhr test',function(){
XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest
xhr = new XMLHttpRequest()
xhr.open('GET', "http://url-bla-bla.json", true)
xhr.onreadystatechange = function(){
console.log("xhr "+JSON.stringify(xhr))
}
xhr.send()
}
}
并使用mocha f
运行(我甚至不必用Mocha规范包装它)
使用readyState == 1
时它将不起作用并失败
这是一个异步操作。在Mocha中,当操作完成时,您必须使用done
回调来完成测试,如下所示:
describe('foo',function(){
it('xhr test',function(done){
XMLHttpRequest = require('xmlhttprequest').XMLHttpRequest
xhr = new XMLHttpRequest()
xhr.open('GET', "http://url-bla-bla.json", true)
xhr.onreadystatechange = function(){
console.log("xhr "+JSON.stringify(xhr))
if (xhr.readyState === 4)
done();
}
xhr.send()
});
});
除了修复语法错误外,唯一的其他更改是将done
参数添加到it
调用的回调中,并在onreadystatechanges
执行且readyState
达到4
时调用done()
。
相关文章:
- XMLHttpRequest未返回值-状态202
- XMLHttpRequest在移动设备上的chrome上不起作用
- AJAX简单错误.XMLHttpRequest无法加载http://localhost/mpl/getPage.php.
- 检查xmlhttprequest问题的消息
- 主线程上的同步XMLHttpRequest已弃用
- 如何定期发出xmlhttprequest
- javascript第三个XMLHttpRequest被拒绝.但前两个是允许的
- 上传带有XMLHttprequest的文件-多部分/表单数据中缺少边界
- 对象#<XMLHttpRequest>没有方法'完成'
- 在XMLHttpRequest之后重新初始化jQuery
- 如何将GreaseMonkey中的XMLHttpRequest延迟到目标页面加载完成
- Javascript XMLHttpRequest——只有第一个POST请求有效
- XMLHttpRequest - difference between Chrome & Firefox
- IE上的新XMLHttpRequest()出现JS Ajax未指定错误
- 非常简单的XMLHttpRequest不起作用
- 如何使用XMLHttpRequest下载文件
- XMLHttpRequest在$.ajax工作的地方给出了CORS错误
- XMLHttpRequest.open()AJAX中的参数url
- XMLHTTPRequest脚本中没有internet连接和超时
- 为什么当async标志设置为false时,xmlhttprequest中的代码可以工作,而当它设置为true时却不能工作