3

モバイルページに約 3 ~ 5 個の XHR リクエストがあります。実際のデバイスでのみ、接続が遅い場合にのみ、一部が機能しないことがあります。モバイル Web アプリケーションの持続可能性を改善したいと考えています。

だから私の質問は..ランダムに壊れたエッジ接続をエミュレートする方法は?

MobiOne のようなエミュレーターでは、接続速度の制限は機能しますが、接続にはデスクトップの安定性があります。そのため、すべての動作が遅くなります。

4

2 に答える 2

4

Charlesを使用できます。これにより、低速のインターネット接続をシミュレートできます。また、クロス プラットフォームですか?

于 2012-10-26T16:21:31.840 に答える
2

ユニットテストを書いてみませんか?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 が正しくない場合、基本的にインターネット接続がないことをシミュレートする必要があります。

于 2012-10-27T00:03:54.053 に答える