Комментарии 12
На правах бессмысленно и беспощадной саморекламы:
Мы, кстати, оценивали сколько будет стоит разработка крайне легковесного, но функционального PWA приложения для интернет-банка на связке $mol + hyperhive под ключ.
Командой из разработчика, дизайнера и тестировщика выходило всего 3 ляма за пол года.
Набор фич примерно такой: экран входа, список счетов, история транзакций, статистика транзакций, каталог платежей, перевод средств, лента новостей, открытие вклада, управление счетами, управление личными данными, карта филиалов, чат, обмен валют, настройки безопасности.
Сталкивались ли вы с интрументами, облегчающими написание тестов? Может быть, генератор типовых test-suite'ов, может какие-нить плагины к vscode или webstorm?
Вкратце, что это такое: в самом начале проекта, когда только создал папочку или репозиторий, заходишь в эту папочку и делаешь:
npm install -g yo generator-rest
yo rest
Дальше он спросит название проекта, структуру папок, базовые вещи типа тех, какую авторизацию нужно поддерживать. Когда он закончит работу, то будет готова структура директорий с готовыми тестами и готовыми моделями типа users и тех, что сам выберешь при создании.
src/
├─ api/
│ ├─ user/
│ │ ├─ controller.js
│ │ ├─ index.js
│ │ ├─ index.test.js
│ │ ├─ model.js
│ │ └─ model.test.js
│ └─ index.js
├─ services/
│ ├─ express/
│ ├─ facebook/
│ ├─ mongoose/
│ ├─ passport/
│ ├─ sendgrid/
│ └─ your-service/
├─ app.js
├─ config.js
└─ index.js
А добавление новых эндпоинтов поддерживается командой
yo rest:api
Кроме того, что разработка упростилась в десятки раз из-за того, что уже готов «wireframe», там уже есть шаблоны тестов. К тому же, этот генератор еще и поддерживает создание новых эндпоинтов через свой интерфейс, и сам для них делает код и тесты.
Мне даже стало жаль, что я не видел таких вещей для iOS или для фронт-енда. Это не то же самое, что фреймворк, потому что во внутренности фреймворка не будешь лезть для конфигурации, тут важно, что он генерирует именно код, который иначе ты бы писал. А мне с довольно небольшим опытом бэкенда еще и в плюс, что он создал логичную архитектуру.
Такое нереальное количество времени на запуск модульных тестов требуется только тогда, когда все разработчики все поведение раскладывают именно в Angular компоненты. Поэтому сокращение количества времени на выполнение модульных тестов обычно дает банальное разделение ответственности, упоминающееся в SOLID. Все поведение, не использующее ничего из пространства имен angular, реализуем в отдельных классах, которые затем используем уже собственно в компонентах. При таком раскладе необязательно и в броузерах тесты запускать вовсе. А компоненты являются просто фасадами и адаптерами для низлежащего, уже протестированного поведения.
Юнит-тестирование. Чип-тюнинг