我们在移动页面上有大约3-5个XHR请求 - 有时它们中的一部分不起作用,仅在真实设备上,仅在慢速连接时。我想提高移动Web应用程序的可持续性。
所以我的问题是..如何模仿边缘连接,随机破坏?
在像MobiOne这样的模拟器中 - 连接速度限制工作,但连接具有桌面稳定性 - 所以一切都运行缓慢。
答案 0 :(得分:4)
您可以使用Charles。这允许你模拟较慢的互联网连接,并且是跨平台的吗?
答案 1 :(得分:2)
为什么不写单元测试?您可以为xhr函数创建模拟/间谍。这样做可以预测地强制破坏各种基于ajax的组件。这会强制您始终通过执行操作(例如再次尝试)来确定已断开的连接,并确保在事情失败时显示加载屏幕和消息。
我认为通过采取这些步骤,您将创建一个更加简单的应用程序。一个糟糕的连接模拟器将向您证明事情是不可预测的。如果您要修复一件事,那么下次运行模拟器时,它会无限地发现其他错误。
以下是使用jasmine / jquery的示例:
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
});
您的来源可能如下所示:
$.get("url").then(function() {
//done
}, function () {
//fail
});
或
$.ajax("url")
.done(function() {})
.fail(function() {});
或
var dfd = $.post("url");
$.when(dfd).done(fn).fail(fn);
这可以测试个别的ajax事件。您还可以尝试概括一些默认行为。
如果您不使用jquery,您仍然可以使用延迟。还有其他延迟库或你可以从jquery源获取dfd,这应该有助于所有这些。如果您正在使用其他一些XHR或家庭酿造的东西,您应该能够通过始终返回dfds并在正常回调中解决或失败来集成2。
最后,要真正测试您的应用的功能,只需用不起作用的东西暂时替换普通网址。并观察您的应用程序的反应。如果您的所有网址都不正确,那么基本上应该模拟没有互联网连接。