1

私が使用しているアプリにはGET、ユーザーのメール アドレスを検証するルートがあります。電子メールが無効な場合、サーバーは次のように応答します。

  • ステータス200コード
  • を含む応答ヘッダーContent-Type:application/json; charset=utf-8
  • 応答データ自体は、「このメールは無効です」という単なる文字列です。

私はこれをシミュレートしようとしember-cli-mirageています:

this.get('/ember_api/v1/validations/validate_email', function() {
  return [200, { 'Content-Type': 'application/json' }, "This email is invalid"];

  // also tried this:
  // return new Mirage.Response(200, { 'Content-Type': 'application/json' }, JSON.stringify({"message":"This email is invalid"}));

  // and tried this:
  // return "This email is invalid";
});

テスト自体は、このリクエストを開始するボタン クリックです。

GET "/ember_api/v1/validations/validate_email?email=fakey%40fakefakefake.com&skip_uniq=true"

...そして、私が得ているエラーは次のとおりです。

プリテンダーが GET /ember_api/v1/validations/validate_email?email=tom%40gmail.com&skip_uniq=true をインターセプトしましたが、エラーが発生しました: /ember_api/v1/validations/validate_email?email=tom%40gmail.com&skip_uniq=true のハンドラーから何も返されませんでした。[ステータス、ヘッダー、本文] を返すことを忘れないでください。あなたのルートハンドラーで。

それは私に求めてreturn [status, headers, body]いますが、ハンドラーでこれを行っていますが、それでもエラーがスローされます。

これは実際に応答の問題ですか?JSON API 形式のオブジェクトを実際に返すように API を編集する必要がありますか? そのようにテストを記述できますか?

それがアプリが行っていることなので、テストで文字列を返すことができるはずだと感じています。どんな助けでも大歓迎です。

4

1 に答える 1

0

使用this.getしている は Mirage バージョンです。this.pretender.get現在のコードサンプルで動作するはずの which を使用することもできます...

于 2016-11-30T06:40:58.877 に答える