JavaScript 中异步 Ajax 调用的测试结果
Test result of asyncronous Ajax call in JavaScript
我有一个使用jQuery的函数,如下所示:
function populate_messages_node() {
$.ajax({url: "/messages", type: "GET", success: populate_recent_messages});
}
我想为这个函数编写一个集成测试。我的问题是测试:
function test_simple() {
populate_messages_node();
// assert node content here
}
。不会等待Ajax成功方法(populate_recent_messages)来做它的事情。对于这个微不足道的例子,做$.ajaxSetup({async:false})
工作,但我担心这并不总是正确的。对于更复杂的场景,将有大量此类测试。
我想我的问题实际上是:在Javascript中没有办法等待XHR/Websocket操作完成吗?
我宁愿不修改生产代码(populate_messages_node),但从.ajax()返回xhr结果是可以的。 (我提前为没有找到确切描述此问题的规范SO帖子而道歉。
您可以从 populate_message_node()
返回延迟对象,然后挂接到完整的事件,如下所示。
function populate_messages_node() {
return $.ajax({url: "/messages", type: "GET", success: populate_recent_messages});
}
function test_simple() {
populate_messages_node().complete(function(jqxhr){
// assert node content here
});
}
相关文章:
- JSPerf 测试结果随着测试的运行而变慢
- 在量角器中验证测试结果(非“预期”功能)
- AngularJS:指令限制:“E”阻止在Jasmine单元测试中调用元素click()事件
- 如何模拟ajax对Jasmine测试的调用
- 如何修复SQL Inject-Me测试结果
- 之前每个测试都会调用每个测试,而不仅仅是一次
- 如何在 EmberJS 验收测试中调用输入和按钮
- 无法在茉莉花测试中调用$scope.form.$submitted:未定义
- 将javascript函数的结果调用到Jquery css事件中,加载和调整大小
- 无法让茉莉花测试成功调用注入的服务
- JavaScript 中异步 Ajax 调用的测试结果
- AngularJS指令的链接函数从未在Jasmine测试中调用过
- qunit + mockjax:我什么时候应该在异步测试中调用 mockjaxClear
- 返回带有mocha的promise的测试方法调用
- 如何将javascript测试结果更改为基于权重的评分
- Javascript返回基于日期的平均测试结果数组
- 在javascript的帮助下,通过seleniumIDE,我如何将测试结果记录在MSXL或CSV文件中
- 对象getter/setter与新构造函数的比较-测试结果
- 使用默认值的逻辑测试结果
- Angular.js单元测试不调用$animate.enter回调