от zzarcon
3 месяца после первого фиксации Kakapo.js достигает первого релиза, и мы гордимся тем, что объявляем, что теперь он готов к использованию. Давайте познакомим вас в Какапо.
Kakapo – это просто набор инструментов, которые пытаются сделать вашу жизнь проще при создании веб-приложений, специально при создании Клиентские боковые издевательства . Он предоставляет компоненты и API, которые позволяют легко реплицировать логику и ответы вашей бэкэнда на стороне клиента.
Это ничего нового, и я совершенно уверен, что вы знакомы с такими инструментами, как jquery-mockjax , Fakexmlhttprequest или Fetch-Mock Эти инструменты великолепны и были там для довольно добывающего времени, но на мой взгляд, они являются только одной частью решения большой проблемы.
Почему вы заботитесь о клиентском боковом издевании? Решить Backend-узкое место Отказ
Бэкэнд узкое место
Последний спринт ретроспективы, после третьего спринта в ряд не хватает более 50% строговых точек, мы начали задавать себя, что идет не так. Некоторые задние частицы говорили:
- Да, мы думали, что это была легкая задача, но мы должны были потратить 1 неделю рефакторинга текущей функциональности, чтобы она работала как ожидаемое …
- Слишком много не запланированных вещей вышел, и нам пришлось позаботиться о тех вопросах, происходящих в производстве …
- Постановка серверов вообще не работала, и мы должны были повторно развернуть сервис более 5 раз …
С другой стороны, передний конец Devs:
- Я провел весь понедельник, пытаясь понять, почему конечная точка возвращала 500 кода состояния вместо того, чтобы получить ожидаемый ответ …
- Мы строили профиль пользователя, но конечная точка Create не задокументирована, поэтому мы не могли сделать его для выпуска …
- Вчера я должен был переключиться слишком много раз в разных условиях постановки, которые у меня не было времени работать над функцией …
Я был очень расстроен в отношении нынешней ситуации и, специально, не в состоянии отправить небольшую функцию в расчетное время. Мне потребовалось некоторое время, чтобы понять, что это не проблема или клиентская проблема: проблема была чем-то глубже, и потребуется больше времени и усилий, чтобы быть исправленным.
Давайте посмотрим на основной пример, чтобы получить представление о том, как она работает:
В приведенном выше примере мы просто определяем пару конечных точек и одного завода, то мы определяем какую-то бизнес-логику внутри обработчиков запросов, чтобы вернуть поддельные ответы. Для этого мы используем три ключевых элемента Kakapo:
- Маршрутизатор : Маршрутизатор Kakapo распознает URL (маршруты) и отправляет их к соответствующим обработчикам. Это также обеспечивает Запрос Объект как аргумент, который дает вам полезную информацию о входящем запросе.
- База данных : Этот класс вместе с заводы и Отношения Позволяет определить, как должны быть представлены ваши организации и их поведение.
- Сервер : Он соединяет все остальные компоненты и позволяет активировать или деактивировать их; Эта функция дает вам возможность переключаться между несколькими базами данных и маршрутизаторами, мы называем это Сценарии Отказ
Степень клиента в реальной жизни
Обычно насмешливые API делают, создавая Статический Джосон за каждый запрос и тестирование против него. Создание и обслуживание JSON – это повторяющаяся задача и подвержены ошибкам.
Kakapo, вместо этого, позволяет динамически макет Ваши ответы, определяя, как они должны выглядеть и автоматически сериализировать их в JSON.
В качестве примера, давайте постараемся сделать Crud
Вот как легко воспроизвести akrud с Kakapo, вы также можете взглянуть на Поддельные данные и сериализаторы Чтобы увидеть несколько вкусностей Какапо.
Технические задачи
Помимо всех материалов, которые мы узнали в процессе построения библиотеки, я хотел бы указать некоторые из самых сложных вещей, которые мы должны были столкнуться:
Перехватчики
Перехватчик компоненты, которые отвечают за Перехватить Пользовательский запрос, проверьте, могут ли совпадать с любыми маршрутами и применить издевание, они разработаны в таком такте, который пользователь может определить свои собственные. В настоящее время мы поддерживаем API в сети браузера, XMLHTTPREQUEST и извлекать Но скоро мы будем поддерживать Node.js?
Я нашел этот компонент, сложный, потому что вы должны воспроизвести ту же функционал, что APIS Browser предоставляет, как только вы ведете себя по-другому, приложение может сломаться, поскольку это зависит от собственного поведения. Вы можете многому научиться, зная эти вещи непосредственно с нативными API, а не используя обертки, такие как jQuery, потому что вы действительно поймете, как это внутренне работает.
При внедрении перехватчиков мы должны были не сломать популярные сетевые библиотеки, такие как jquery и SuperaGent ; Мы создали Интеграционные тесты Чтобы гарантировать, что Kakapo будет продолжать работать, как ожидалось после введения новых изменений.
Тестирование
Тестирование является обязательным для разработки программного обеспечения, но еще более важно в проектах с открытым исходным кодом, что другие разработчики потенциально будут использовать. Мы всегда имели это в виду, создавая Какапо, и это был первый проект, который я когда-либо делал в строгом TDD способ. Я должен признать, что чувство, которое у меня было в начале, было уменьшенным, чем у меня сейчас. Иногда я чувствовал, что написание так много испытаний замедлило нас, но теперь с Высокое покрытие кода Я чувствую себя действительно уверенным в уверенности, когда я должен рефакторировать критический компонент или добавить новую функцию в библиотеку.
Это то, что вы должны постепенно представить в вашем рабочем процессе и определять с командой. Поскольку это был самый большой проект с открытым исходным кодом, над которым я когда-либо работал, я узнал, как координировать и работать с командой. Иногда нужно обсуждать вещи дважды или больше Просто чтобы убедиться, что все участники находятся на одной странице, но в конце будет работать.
Важность документации
Разработчики Ненавижу написание документации. К сожалению, это так же важно, как иметь хорошую библиотеку и будет первым, что увидит ваши пользователи и участники.
Подумайте об этом так: вы строили свою библиотеку в течение нескольких месяцев, и теперь наконец-то готова, не думаю, что это стоит того, чтобы потратить несколько дней Строительство сайта И писать несколько хороших примеров?
Это разговор от React Europe 2016, в котором Кристофер Чедол Объясняет, как Facebook имеет дело с распространением библиотек открытых источников.
Jekyll.
Jekyll Буквально спас нас, он улучшил способ написания документации и скорость. Перед выбором Jekyll я использовал для создания статических веб-сайтов с некоторыми CSS и HTML, чтобы поместить там документы. Однако некоторые разработчики могут не свободно говорить и пропустить простоту Реклама Отказ Вот почему мы решили пойти на Jekyll, который позволяет вам написать свои страницы в Крамдада (Реклама со стероидами) и интегрирован с страницами GitHub.
Как только мы чувствовали себя комфортно со статусом документов и примеров, мы также хотели дать хорошее первое впечатление на новичков. Мы создали Сценарий что извлекает MD файл от Страница GitHub добавляет некоторые контент и выводит Прочти меня ?
Демо-приложения
Всем нравится демонстрация, они показывают, что делает ваша библиотека и как это это делает. Это может звучать странно, но также поможет вам узнать, как использовать свою собственную библиотеку, а также поиск ошибок или отсутствующих функций.
Пока мы не построили наши первые Приложение TDO Используя Kakapo, мы не осознавали о главных очках боли и как их решить, поэтому мы позже построили наше второе демонстрационное приложение, A GitHub Explorer .
ДОРОЖНАЯ КАРТА
Проект только начался, но у нас есть амбициозные планы для него; Не стесняйтесь проверить Открытые проблемы Или открывать новые, мы действительно будем ценить это! Вот некоторые из самых важных:
- Полный JSON API Поддержка сериализатора
- Node.js Поддержка перехватчиков
- Async Handlers служба поддержки
Мы также усердно работаем, чтобы закончить SWIFT версия Kakapo Что почти готово к бета-фазе, и мы считаем, что будет изменяющимся игровым режимом для создания приложений IOS: оставайся настроенными! ?
Оригинал: “https://www.freecodecamp.org/news/dynamic-mocking-with-kakapo-js-bdbd3d7b58e2/”