私が使用しているアプリには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 を編集する必要がありますか? そのようにテストを記述できますか?
それがアプリが行っていることなので、テストで文字列を返すことができるはずだと感じています。どんな助けでも大歓迎です。