Важно: каждая задача выполняется в виде отдельного проекта с собственным 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
Важно: данная задача не является обязательной
Вы написали функцию, которая взаимодействует с функцией 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