react-redux-starter-kit
react-redux-starter-kit copied to clipboard
Modular starter kit for React+Redux+React Router projects.
react-redux-starter-kit
Modular starter kit for React+Redux+React Router projects.
- NPM scripts
- Features
- Тестирование
- Документация
NPM scripts
To start locally
npm run devfor development environment in watch modenpm run prodfor production environment in watch mode
To build locally (see build folder)
npm run build:devfor development environment without watch modenpm run build:prodfor production environment without watch mode
To start bundle analyzer
npm run analyze:devfor development environmentnpm run analyze:prodfor production environment
To start isomorphic server
npm run server:devfor development environment in watch modenpm run server:prodfor production environment without watch mode
To start yeoman generator create-feature
npm run yeoman
Features
- [x] Typescript 2.x
- [x] React 16.x
- [x] React-router 4.x
- [x] Redux
- [x] Redux-saga for side-effects
- [x] SCSS
- [x] React-JSS
- [x] BEM methodology
- [x] Webpack 4.x
- [x] Tests (Jest, sinon, enzyme)
- [x] Test coverage
- [x] Hot reload
- [x] Yeoman blocks generator tasks (features, modules, ... )
- [x] Code splitting (async chunks loading)
- [x] Isomorphic
- [x] Material-UI
Тестирование
Тесты используют фреймворк Jest
Запуск
npm testилиnpm t- разовый прогон тестовnpm run test:watch- запуск тестов в watch-режимеnpm run test:debug- запуск с возможностью подключения для отладки ( Chrome / VSCode / Webstorm ).npm run test:coverage- запуск с генерацией карты покрытия кода. Результаты можно открыть в браузере<projectDir>/coverage/lcov-report/index.html.
Snapshot Testing
import React from 'react';
import { shallow } from 'enzyme';
import GenericDateInput from './../GenericDateInput';
it('renders correctly', () => {
const component = shallow(<GenericDateInput />)
expect(component.debug()).toMatchSnapshot();
});
После первого запуска теста создается эталонный снепшот, который будет помещен в папку __snapshots__ рядом с файлом
теста. Его нужно проверить на корректность. После изменений в верстке компонента в терминале будут отображены изменения
произошедшие в компоненте, и если эти изменения ожидаемы, то нужно зафиксировать новые снепшоты, для этого достаточно
в терминале нажать клавишу "u" (при условии что тесты запущены в watch-режиме). ВНИМАНИЕ!!! Будут перезаписаны все снепшоты, не совпадающие с эталонными!
Чтобы обновить снепшот для конкретного теста можно воспользоваться it.only(name, fn, timeout) или describe.only(name, fn), если мы хотим обновить снепшоты для группы тестов.
При возникновении ошибок при тестировании в watch моде:
Для MacOS (Error: watch EMFILE): Удалить watchman, глобально установленный через npm или yarn, если таковой был, и установить повторно через brew.
Для Linux (Error ENOSPC): воспользоваться данной командой:
echo fs.inotify.max_user_watches=524288 | sudo tee -a /etc/sysctl.conf && sudo sysctl -p