ember-cli-mirage error: Nothing returned by handler, but handler exists
ember-cli-mirage error: Nothing returned by handler, but handler exists
在我正在使用的应用程序中,我们有一个 GET
路由来验证用户的电子邮件地址。如果电子邮件无效,服务器响应:
- 一个
200
状态码
- 响应 headers
Content-Type:application/json; charset=utf-8
- 而响应数据本身只是一串"This email is invalid"
我正在尝试在 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"
...我得到的错误是:
Pretender intercepted GET /ember_api/v1/validations/validate_email?email=tom%40gmail.com&skip_uniq=true but encountered an error: Nothing returned by handler for /ember_api/v1/validations/validate_email?email=tom%40gmail.com&skip_uniq=true. Remember to return [status, headers, body]; in your route handler.`
它要求我 return [status, headers, body]
,但我在我的处理程序中这样做,它仍然会抛出错误。
这实际上是响应的问题吗?我是否需要将我的 API 编辑为实际上 return 一个 JSON API 格式 object,以便我可以那样编写测试?
我觉得我应该能够在我的测试中 return 一个字符串,因为这就是应用程序正在做的事情。感谢任何帮助。
您使用的this.get
是Mirage版本。您还可以使用 this.pretender.get
,它应该适用于您当前的代码示例 ...
在我正在使用的应用程序中,我们有一个 GET
路由来验证用户的电子邮件地址。如果电子邮件无效,服务器响应:
- 一个
200
状态码 - 响应 headers
Content-Type:application/json; charset=utf-8
- 而响应数据本身只是一串"This email is invalid"
我正在尝试在 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"
...我得到的错误是:
Pretender intercepted GET /ember_api/v1/validations/validate_email?email=tom%40gmail.com&skip_uniq=true but encountered an error: Nothing returned by handler for /ember_api/v1/validations/validate_email?email=tom%40gmail.com&skip_uniq=true. Remember to return [status, headers, body]; in your route handler.`
它要求我 return [status, headers, body]
,但我在我的处理程序中这样做,它仍然会抛出错误。
这实际上是响应的问题吗?我是否需要将我的 API 编辑为实际上 return 一个 JSON API 格式 object,以便我可以那样编写测试?
我觉得我应该能够在我的测试中 return 一个字符串,因为这就是应用程序正在做的事情。感谢任何帮助。
您使用的this.get
是Mirage版本。您还可以使用 this.pretender.get
,它应该适用于您当前的代码示例 ...