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 的处理程序未返回任何内容。记得返回[status, headers, body];在您的路线处理程序中。`

它要求我return [status, headers, body]这样做,但我在我的处理程序中这样做,它仍然会引发错误。

这实际上是响应的问题吗?我是否需要编辑我的 API 以实际返回 JSON API 格式的对象,以便我可以这样编写测试?

我觉得我应该能够在我的测试中返回一个字符串,因为这就是应用程序正在做的事情。任何帮助表示赞赏。

4

1 回答 1

0

this.get您使用的是 Mirage 版本。您还可以使用this.pretender.getwhich 应该适用于您当前的代码示例...

于 2016-11-30T06:40:58.877 回答