モバイルページに約 3 ~ 5 個の XHR リクエストがあります。実際のデバイスでのみ、接続が遅い場合にのみ、一部が機能しないことがあります。モバイル Web アプリケーションの持続可能性を改善したいと考えています。
だから私の質問は..ランダムに壊れたエッジ接続をエミュレートする方法は?
MobiOne のようなエミュレーターでは、接続速度の制限は機能しますが、接続にはデスクトップの安定性があります。そのため、すべての動作が遅くなります。
モバイルページに約 3 ~ 5 個の XHR リクエストがあります。実際のデバイスでのみ、接続が遅い場合にのみ、一部が機能しないことがあります。モバイル Web アプリケーションの持続可能性を改善したいと考えています。
だから私の質問は..ランダムに壊れたエッジ接続をエミュレートする方法は?
MobiOne のようなエミュレーターでは、接続速度の制限は機能しますが、接続にはデスクトップの安定性があります。そのため、すべての動作が遅くなります。
Charlesを使用できます。これにより、低速のインターネット接続をシミュレートできます。また、クロス プラットフォームですか?
ユニットテストを書いてみませんか?xhr 関数のモック/スパイを作成できます。そうすることで、さまざまな ajax ベースのコンポーネントを予想どおり強制的に壊すことができます。これにより、再試行するなどのことを行い、失敗したときにロード画面とメッセージが表示されるようにすることで、切断された接続を常に考慮する必要があります.
これらの手順を実行することで、より確実なアプリケーションを作成していると思います。接続不良のエミュレーターは、物事が予測不可能であることを証明するだけです。1 つの問題を修正すると、次にエミュレータを実行したときに、他の問題が無限に見つかります。
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 を使用していない場合でも、deferred を使用できます。他の遅延ライブラリが存在するか、jquery ソースから dfd を取得するだけで、これらすべてに役立つはずです。他の XHR または自家製のものを使用している場合は、常に dfd を返し、通常のコールバックでそれらを解決または失敗させることで、2 つを統合できるはずです。
最後に、アプリの機能を実際にテストするには、通常の URL を一時的に機能しないものに置き換えます。そして、アプリがどのように反応するかを観察してください。すべての URL が正しくない場合、基本的にインターネット接続がないことをシミュレートする必要があります。