Javascript.RU

Создать новую тему Ответ
 
Опции темы Искать в теме
  #1 (permalink)  
Старый 24.07.2022, 11:15
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Jest тесты для функций
Как составить jest тест для функции
const createTask = taskData => {
  return fetch(baseUrl, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json;charset=utf-8',
    },
    body: JSON.stringify(taskData),
  });
};


Как-то я не так делаю видимо..

Создал файл для тестов и внутри пишу:

import { createTask } from "../tasksGateway";

it("should return response", () => {
  const task = createTask({ text: "abcde" });
  const baseUrl =
    "https://62d57413d4406e52355b320b.mockapi.io/api/v1/todo-list";
  expect(
    fetch(baseUrl, {
      method: "POST",
      headers: {
        "Content-Type": "application/json;charset=utf-8",
      },
      body: JSON.stringify({ text: "abcde" }),
    }).toEqual(response.json())
  );
});
Ответить с цитированием
  #2 (permalink)  
Старый 24.07.2022, 12:45
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

Сообщение от NovichokJS
return fetch(baseUrl,
baseUrl как этот параметр попадает в taskData?
Ответить с цитированием
  #3 (permalink)  
Старый 24.07.2022, 12:53
Профессор
Отправить личное сообщение для NovichokJS Посмотреть профиль Найти все сообщения от NovichokJS
 
Регистрация: 25.04.2022
Сообщений: 159

Сообщение от рони Посмотреть сообщение
baseUrl как этот параметр попадает в taskData?
const baseUrl = 'https://62d57413d4406e52355b320b.mockapi.io/api/v1/todo-list';

export const getTasksList = () => {
  return fetch(baseUrl).then(response => response.json());
};

export const createTask = taskData => {
  return fetch(baseUrl, {
    method: 'POST',
    headers: {
      'Content-Type': 'application/json;charset=utf-8',
    },
    body: JSON.stringify(taskData),
  });
};
Ответить с цитированием
  #4 (permalink)  
Старый 24.07.2022, 13:06
Аватар для рони
Профессор
Отправить личное сообщение для рони Посмотреть профиль Найти все сообщения от рони
 
Регистрация: 27.05.2010
Сообщений: 33,121

NovichokJS,
Возможно кто-то другой вам поможет...
Ответить с цитированием
  #5 (permalink)  
Старый 24.07.2022, 14:58
Профессор
Отправить личное сообщение для Nexus Посмотреть профиль Найти все сообщения от Nexus
 
Регистрация: 04.12.2012
Сообщений: 3,794

import {
    createTask
} from "../tasksGateway";

it("should return response", () => {
    const task = createTask({
        text: "abcde"
    });

    const baseUrl = "https://62d57413d4406e52355b320b.mockapi.io/api/v1/todo-list";

    expect(
        fetch(baseUrl, {
            method: "POST",
            headers: {
                "Content-Type": "application/json;charset=utf-8",
            },
            body: JSON.stringify({
                text: "abcde"
            }),
        }).toEqual(response.json())
    );
});


Если отформатировать код, то выявляется несколько багов:
1. неиспользуемая переменная task в 6-й строке;
2. у класса Response нет метода toEqual в строке 21;
3. неопределенная переменная response в строке 21.

Предположу, что «.toEqual(response.json())» должно быть перенесено на строку ниже + «response» должно быть заменено на «task».

UPD.
Ну и не забывайте, что fetch возвращает не результат, а Promise<Response<any>>, т.е. в expect попадет экземпляр Promise, а не Response и тем более не ответа сервера в JSON.
Тоже самое касается и переменной task.

Переменную «baseUrl» лучше создать в одном месте, а во все другие места где она нужна просто её импортировать.

Последний раз редактировалось Nexus, 24.07.2022 в 15:07.
Ответить с цитированием
Ответ



Опции темы Искать в теме
Искать в теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Скрипт корзины для сайта EasyNetShop.ru Ваши сайты и скрипты 0 17.11.2016 14:57
Копирайтинг и переводы на 10+ языков для увеличения ваших конверсий AlexeyGST Работа 0 26.09.2016 12:48
Посоветуйте как улучшить код для работы с history api [ jquery + js + history api ] Geo Ваши сайты и скрипты 0 12.01.2014 00:41
Организация тестирования для Angular.JS в JavaEE проекте mknyazev Angular.js 0 16.12.2013 18:33