1

受け入れテストには ember-cli-mirage を使用しています。特定のケースでは、低速の接続でデータをフェッチする際の動作を確認したいと考えています。

ember-cli-miragetimingには、応答の遅延をシミュレートするという設定があります。ただし、この設定は特定のテストで異なるように変更することはできません。

// app/mirage/config.js
this.timing = 400;

私が試したことは、偽のエンドポイントで約束を返すことです。いくつかのインポート/エクスポートを通じて、テストから約束の解決を制御できました。残念ながら、ember-cli-mirage は戻り値をプロミスとして認識していないようで、そのままアダプターにそのまま渡します。

// app/mirage/config.js
this.get('/StopPoint/Search/:term', (db, request) => {
  return freezer.run(function() {
    return db[`stop-point-search-${request.params.term}`][0];
  });
});

// At my test
freezer.on()
runTests()
freezer.off()

質問:これを行う方法はありますか? つまり、ember-cli-mirage で特定の応答の遅延を制御するには?

4

2 に答える 2

4

いくつかの考え:

  • を介して、特定のテスト内でタイミングを変更できますserver.timing。これが他のテストに影響を与えないように、サーバーはテストごとに再インスタンス化する必要があります。

    test('for slow behavior', function() {
      server.timing = 400;
      //
    });
    
  • また、受け入れテスト ガイドの 2 番目の例で示されているように、テスト内でルート ハンドラーを再定義することもできます。を使用している場合0.2.0-beta、ルート ハンドラーには、timingそのハンドラーだけに影響を与えるために使用できるオプションがあります。

    test('for slow behavior', function() {
      server.get('/slow-query', (schema, request) => {
        //
        return data;
      }, {timing: 400};
    
      visit('/');
      //
      assert();
    });
    

凍結を制御できるものを返すというあなたの本能は、Timecopのようなものと連携して、これをテストする理想的な方法だと思います。おそらく、Mirage は最終的にこのための API を追加できます。

于 2016-03-05T12:35:06.577 に答える