ember-cli-mirage error: обработчик ничего не возвращает, но обработчик существует

В приложении, с которым я работаю, у нас есть 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%40gmailiqt_ru_ru Не забудьте вернуть [статус, заголовки, тело]; в вашем маршруте обработчик.

Это просит меня return [status, headers, body], но я делаю это в моем обработчике, и он по-прежнему выдает ошибку.

Это действительно проблема с ответом? Нужно ли мне редактировать мой API, чтобы он действительно возвращал объект в формате JSON API, чтобы я мог написать тест таким образом?

Я чувствую, что должен быть в состоянии вернуть строку в моем тесте, так как это то, что делает приложение. Любая помощь приветствуется.

1 ответ

Решение

this.get Вы используете версию Mirage. Вы также можете использовать this.pretender.get который должен работать с вашим текущим примером кода...

Другие вопросы по тегам