2

ルートからの検索リクエストに追加されるデフォルトのパラメーターがあります。これらを ember-cli-mirage でテストしたいのですが、リクエストまたは requestBody をキャプチャして、それに対してアサートできるようにする方法に行き詰まっています。

この SO 投稿で見つけたものに似たものを探していましたが、DOM ではなく実際のリクエストにアクセスする必要があります。currentUrl() を使用して、ユーザーが入力した検索パラメーター (この例では「テキスト」パラメーター) にアクセスできますが、サーバーに送信されたリクエストに含まれるデフォルトのパラメーターは含まれていますが、URL には含まれていません。

ember-cli-mirage を使用して、リクエスト自体をキャプチャしてアサートする方法はありますか?

何かのようなもの

test('it appends default params to request'), function(assert) {
  let searchUrl = '/my/route/url';

  server.get(searchUrl, (db, request) => {
    assert.equal(request.requestBody, "text=abc&all=true");
  }
});

編集

次のように、Qunit の非同期ヘルパーを使用してテストに合格することができました。

test('it appends default params to athlete request', function(assert) {
  assert.expect(2);
  let done = assert.async();

  server.get('/athletes', (db, request) => {
    let params = request.queryParams;
    assert.equal(params["page"], "1");
    assert.equal(params["per"], "50");
    done();
  });

  server.create('athlete', {first_name: 'John'});
  visit('/athletes');
});

json:api シリアライゼーションに関連するこのテストのコンソールでまだエラーが発生しています。

normalizeResponse must return a valid JSON API document:
        * meta must be an object

この失敗に関連する別の質問を別の場所で開き、コメントにリンクします。

4

1 に答える 1

4

ルートrequestハンドラに渡されるパラメータはPretenderJSリクエスト オブジェクトで、いくつかの便利なキーがあります。

  • request.params、ルートの動的セグメント
  • request.queryParams、デシリアライズされたクエリ リクエスト パラメータ
  • request.requestBody、テキスト本文、JSON.parse(request.requestBody)これをオブジェクトに変換するために使用できます。

そのため、クエリ パラメータに対してアサートする場合は、 を使用しますrequest.queryParms

于 2015-12-19T17:36:07.630 に答える