Получено: [Синтаксическая ошибка: Неожиданный токен

#javascript #jestjs #fetch #enzyme

Вопрос:

Я пытаюсь написать тест для службы, которая выполняет вызов ajax через api выборки. Сервис выглядит так, как показано ниже.

 export function authService(user, apiEndpoint) {
  return fetch(`http://localhost:3000/api/v1/${apiEndpoint}`, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json',
    },
    body: user,
  })
  .then(response => {
    return response.json();
  })
  .then(json => {
    return json;
  })
  .catch(error => {
    return error;
  });
};
 

Мои тесты выглядят так.

 it('should success upon fetch request', async () => {
        await expect(authService()).resolves.toBe(JSON.stringify({
            success: true,
            message: 'Logged in successfully.',
        }));
    });
 

Но это показывает мою ошибку ниже.

 Expected: "{"success":true,"message":"Logged in successfully."}"
    Received: [SyntaxError: Unexpected token < in JSON at position 0]

      88 |
      89 |  it('should success upon fetch request', async () => {
    > 90 |      await expect(authService()).resolves.toBe(JSON.stringify({
         |                                           ^
      91 |          success: true,
      92 |          message: 'Logged in successfully.',
      93 |      }));
 

Похоже, что он не возвращает объект json, который я ожидаю. Как я могу исправить эту проблему?

Комментарии:

1. Разве так не должно await expect(authService()) быть expect(await authService()) ?

2. @Yousaf, это не решает эту проблему.

3. Ваш API возвращает HTML, а не JSON. Вероятно, это какая-то страница с ошибкой на сервере.

4. @Pointy сервер возвращает json, когда я запускаю код.

5. Ну, по-видимому, это не так, иначе вы бы не получили эту ошибку: «позиция 0», разве это не означает, что ответ начинается с чего-то вроде <!DOCTYPE ??