#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
??