Skip to content
/ ajs_ci_3 Public

Домашнее задание к лекции «Unit-тестирование»

Notifications You must be signed in to change notification settings

eurov/ajs_ci_3

Repository files navigation

Build status

Домашнее задание к лекции «Unit-тестирование». Задача №3

Важно: каждая задача выполняется в виде отдельного проекта с собственным GitHub репозиторием.

Важно: ESLint не должен выдавать ошибок.

Важно: Jest должен обеспечивать 100% покрытие по строкам для тестируемых вами функций.

Важно: Ко всем задачам должен быть подключен Appveyor и выставлен бейджик статуса.

Важно: используйте import/export а не require.

В качестве шаблона вы можете использовать готовый проект.

В личном кабинете на сайте netology.ru в поле комментария к домашней работе вставьте ссылки на ваш GitHub-проекты.

Описание установки

npm init
# При инициалиализации в качестве тестовой команды указать:
# test command: jest --coverage
npm install --save-dev jest babel-jest @babel/core @babel/cli @babel/preset-env
npm install core-js@3

Не забудьте про .babelrc и .browserslistrc.

В .babelrc:

{
  "presets": [["@babel/preset-env", {
    "useBuiltIns": "usage",
    "corejs": 3
  }]]
}

Запуск тестов:

npm test

Mocking (задача со звёздочкой)

Важно: данная задача не является обязательной

Легенда

Вы написали функцию, которая взаимодействует с функцией fetchData (достаточно тяжёлой, т.к. взаимодействует с удалённым веб-сервером). Вы хотите протестировать свою функцию (в том числе на то, как она обрабатывает ошибки) и, чтобы «отвязаться» от этой тяжёлой зависимости, решили использовать механизм «mocking'а».

Описание

// Демо-реализация функции fetchData (модуль http):
export default function fetchData(url) {
  throw new Error('Mock this!');
}
// Ваша функция:
import fetchData from './http';

export function getLevel(userId) {
  const response = fetchData(`https://server/user/${userId}`);
  
  // TODO: логика обработки
  if (response.status === 'ok') {
     return `Ваш текущий уровень: ${response.level}`; 
  }
  
  return `Информация об уровне временно недоступна`;
}

Сделайте моки для функции fetchData и напишите тесты таким образом, чтобы обеспечить 100% покрытие тестами функции getLevel по строкам.

Обратите внимание: тесты вам надо писать для функции getLevel

About

Домашнее задание к лекции «Unit-тестирование»

Topics

Resources

Stars

Watchers

Forks

Releases

No releases published

Packages