Тестовое задание от компании FunBox на должность JS-разработчика.
Условие задания можно прочесть здесь.
Ответы на вопросы части Level I расположены в отдельном PDF документе.
Запуск:
npm install
npm start
Запустить все unit-тесты с --verbose флагом и без watch-режима:
npm run test:unit
В данном случае я отношу к интеграционным тесты, которые пытаются охватить несколько компонентов или их взаимодействие. Тесты данного типа находятся в папке
src/__tests__
.
Запустить все integration-тесты с --verbose флагом, без watch режима:
npm run test:integration
- Проект построен при помощи Create React App (2.0.x)
- Тесты написаны с использование Jest, Sinon и Enzyme (тестирование React-компонентов).
- В основе UI - React
Для написания CSS использовался BEM подход (с React соглашением по именованию)
Настройка тестов: В src/setupTests.js
происходит патч Jest функции it
, чтобы она не падала, если тело теста пропущено (для написания спецификации достаточно только описания теста).
В 24 версии Jest появится (уже смержили в alpha) it.todo
для этих же целей - после релиза стабильной версии можно будет удалить monkey patching.
Переменные окружения: В .env
указывается NODE_PATH переменная, чтобы при сборке модули (относительные пути, начинающиеся не ./
, ../
, etc) корректно разрешались и добавлялись в bundle.
Деплой: Деплой осуществляется на Github Pages, в ветку gh-pages
при помощи одноименного npm пакета. Create-react-app учитывает поле homepage
файла package.json, поэтому сборка происходит с учетом относительного пути расположения.