首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >模拟移动连接

模拟移动连接
EN

Stack Overflow用户
提问于 2012-10-24 17:44:03
回答 2查看 184关注 0票数 3

我们在移动页面上有大约3-5个XHR请求-有时它们中的一部分无法工作,只有在真正的设备上,只有在缓慢的连接上。我想提高我们的移动web应用程序的可持续性。

所以我的问题是..如何模拟边连接,即随机中断?

在像MobiOne这样的模拟器中-连接速度限制工作,但连接有桌面稳定性-所以一切都很慢。

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2012-10-27 08:03:54

为什么不写一个单元测试呢?您可以为xhr函数创建一个mock/spy。通过这样做,您可以对各种基于ajax的组件进行可预测的强制中断。这迫使你总是通过做一些事情来解释丢失的连接,比如重试,并确保在失败时出现加载屏幕和消息。

我认为,通过采取这些步骤,您正在创建一个更愚蠢的应用程序。一个糟糕的连接模拟器只会向你证明事情是不可预测的。如果你要修复一件事,那么下次你运行仿真器时,它会无限地发现其他错误。

下面是一个使用jasmine/jquery的示例:

代码语言:javascript
复制
it("Will allow failed ajax events", function() {
    var dfd = $.Deferred();
    spyOn($, "ajax").andReturn(dfd);
    dfd.reject(); // calls all failed events
});

it("Will allow done ajax events", function() {
    var dfd = $.Deferred();
    spyOn($, "ajax").andReturn(dfd);
    dfd.resolve(); // calls all done events
});

您的源可能如下所示:

代码语言:javascript
复制
$.get("url").then(function() { 
    //done
}, function () {
    //fail
});

代码语言:javascript
复制
$.ajax("url")
    .done(function() {})
    .fail(function() {});

代码语言:javascript
复制
var dfd = $.post("url");
$.when(dfd).done(fn).fail(fn);

这可以测试单个ajax事件。您还可以尝试潜在地泛化一些默认行为。

如果你没有使用jquery,你仍然可以使用deferreds。还有其他的延迟库,或者你可以直接从jquery源码中获取dfd,这应该对所有这些都有帮助。如果您正在使用其他XHR或自制的东西,您应该能够通过总是返回dfds并在正常的回调中解决或失败它们来集成这2个。

最后,要实际测试应用程序的功能,只需将常规urls临时替换为不起作用的urls即可。并观察你的应用程序的反应。如果你所有的网址都是不正确的,那基本上应该模拟没有互联网连接。

票数 2
EN

Stack Overflow用户

发布于 2012-10-27 00:21:32

您可以使用Charles。这可以让你模拟较慢的互联网连接,并且是跨平台的吗?

票数 4
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/13046639

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档