Автор оригинала: FreeCodeCamp Community Member.
Как мы проживаем тесты и примеры компонентов реагирования на полосою
Основная выгода GraphQl для разработчиков Frontend всегда была отличной оснащением и опытом разработчика. Главный среди них – это способность легко издеваться от ваших данных. Mocking API имеет решающее значение, потому что он позволяет писать и тестировать свои компоненты без необходимости запускать все свое приложение. Вы даже можете разрабатывать компоненты пользовательского интерфейса на основе издеванной схемы, когда реализация Backend еще не ускорена, ускоряя разработку.
В последние несколько месяцев команда платформы приборной панели на Полоса был интегрирован Graphql и Аполлон Для получения данных на полосовой приборной панели. Наша цель – создать плавный и продуктивный опыт для разработчиков продукта по всей компании. Один из самых важных аспектов этого делает тестирование как можно проще. В службе этого результата мы придумали некоторые новые шаблоны, которые позволяют нам издеваться на данные с чрезвычайно небольшим количеством кода.
Я скажу вам, как мы:
- Данные Mock GraphQL для всей схемы
- настроить нашими издевательствами на основе на основе
- Mock Loading и ошибки состояния только с одной строкой кода
- Интеграция этих издеваний в наши опрометки и компонент
Собрайте, эти новые инструменты позволяют нам представлять компоненты пользовательских интерфейсов, которые зависят от данных GraphQL в тестах и примерах, во всех состояниях, которые нам нужны, без записи кода для обработки определенных запросов и ответов.
Так что давайте прыгнем прямо в! Мы включили весь код, необходимый для последующего последующего последующего режима в этом посте. Мы приветствуем кого-то из сообщества публикации NPM
Пакет на основе нашего подхода.
Особенное благодаря моим коллегам Isaac Hellendag , Оливер Вонг и Джейсон Богок, который внес свой вклад в эти инструменты и этот пост.
Фон: издевающие данные с GraphQL-инструментами
Существует множество инструментов, которые сделают его сверхпростые запрашивания на основе схемы и запросов GraphQL.
Есть оригинал graphql-tools Библиотека, GraphQL-Faker CLI, а теперь даже Apollo Server имеет издевание встроенного в Отказ Я частично для Graphql-Tools, потому что это самое простое настроить.
Прежде чем попасть в новые вещи, я действительно взволнован с настраиванием для каждого компонента, я покажу вам основную установку издевательства.
Вот как вы можете получить издевательную схему вверх и быстро работать Super с GraphQL-Tools:
Этот подход позволяет генерировать какую-либо форму поддельных данных, только путем предоставления запроса. Вот как мы можем провести нашу издеванную схему до наших компонентов Apollo, используя APOLLO-LINK-SCHEMA и клиент Аполлона:
Теперь мы можем сделать компонент с издевателями в любом месте, где мы хотим, например, в шутке, или компонент Explorer, как история. Одна хорошая вещь, что graphql-tools
Позволяет нам проходить в пользовательских издевательствах для нашей схемы на основе в зависимости от типа.
Это позволяет нам убедиться, что данные, которые мы получаем от наших издеваний, выглядят несколько реальными. Faker
Библиотека здесь очень полезна, потому что она позволяет нам получить несколько реалистичные данные с низкими усилиями.
К сожалению, имея издеванную схему, которая возвращает реалистичные данные, вполне достаточно для полной установки издевательства. Иногда вы хотите иметь тест или пример компонента, отображающий очень специфическую ситуацию, а не общие данные. Вы также должны убедиться, что ваш компонент ведет себя правильно, когда он получает пустые строки или действительно длинный список или состояние загрузки или ошибка. И вот где вещи действительно интересны.
Настройка издеваний на основе на основе компонентной базы с издевающимся поставщиком
После пробования много разных подходов мы придумали аккуратную API, который позволяет нам использовать глобальные издевательства при настройке только типов и полей, которые нам нужно для этого конкретного теста или примера.
Вот что похоже:
Это позволяет нам убедиться, что компонент получает ровно два Todo
Предметы, где первый завершен, а второй нет. Но вот самая лучшая часть – остальные данные поступают из глобальных изделок, которые мы определили для всего приложения! Поэтому нам нужно только указать поля, которые мы заботимся об этом конкретным примере.
Это позволяет нам получить лучшее из как миров – низкие усилия, реалистичные глобальные издевательства, при сохранении Возможность получения пользовательских результатов для демонстрации определенных ситуаций на основе в зависимости от принципа. Итак, как это работает?
Мы реализовали это через насмешливый провайдер, который объединяет пользовательские резольверы, прошедшие через его реквизиты с нашими глобальными резольстами издевателями, как это:
Требуется пользовательские резользеры, которые вы передаете, объединяют его с вашими глобальными издевателями, а затем создают новый экземпляр клиента Apollo, который будет использоваться компонентом, который вы тестируете.
Самая важная функция здесь – Мержерольсеры
, что позволяет нам объединить наши мировой магистрали, которые переопределяют конкретный тестовый случай. Это слишком много времени, чтобы вписаться в этот блог, но это около 50 строк кода: Ознакомьтесь с функцией Mergeresolvers в своем цисте моего коллеги ISAAC.
Изделка загрузки и состояния ошибок в одной строке кода
Система выше приводит нас большинство из того, что нам нужно, но у него нет хорошего способа высмеивать вещи, которые не являются фактическими данными – в частности, загрузки и состояния ошибок. К счастью, мы можем использовать аналогичный подход с помощью ссылки Apollo для создания специальных провайдеров для этих случаев. Например, вот простой поставщик для издевания состояния загрузки.
Это верно – это так мало, он вписывается в твит. И вот как вы бы его использовали:
Супер просто! Потрясающие вещи. И состояния ошибок почти так же легко.
Вы можете использовать это таким же образом, но вы также можете пройти настраиваемую ошибку:
Вооруженные этими тремя инструментами – провайдер издевательства с пользовательскими резользами, поставщиком по загрузке и поставщиком ошибок – вы можете добиться общего издевалкими случаями использования в очень небольшом количестве кода.
Для более сложных случаев использования вы все еще можете использовать встроенный React-Apollo MockedProvider , который позволяет вам указать абсолютно пользовательские запросы и пары ответов.
Интеграция в лучшие испытания и ваш компонент Explorer
Теперь, когда у нас есть простой способ издеваться на данные, загрузки состояний и ошибок, мы можем легко интегрировать их в шутник или компонентный проводник. У нас есть собственный внутренний компонент Explorer Tool, но обычно используемый в сообществе – это история журнала.
Вот как выглядит простой шутник, используя Гора
от Фермент Чтобы сделать компонент React, а затем убедитесь, что его содержимое мы ожидаем.
И вы можете использовать эти провайдеры таким же образом при рендере пример компонента в складской книге или подобных.
И вот как мы это делаем!
Заключение
Мы надеемся, что привлечение силы Graphql разработчикам на полосою на полосою будет делать разработку Frontend гораздо более интересным и продуктивным, и это всего лишь начало истории. Я взволнован работать с такой удивительной командой на полосой!
Мы используем наш прошлый опыт, работающий над командами и технологиями Frontend и Technologies, чтобы придумать захватывающие подходы для улучшения обработки данных и API. Я не могу дождаться, чтобы поделиться большим количеством того, что мы работаем в течение следующих нескольких месяцев.
Пожалуйста, обратитесь к мне в Twitter на @stubaile Если вы решите построить пакет на основе этого поста, есть некоторые отзывы или хотите пообщаться с GraphQL и реагировать!
Также Мы нанимаем для многих Различные инженерные роли Вот на полосой Так что, пожалуйста, подать заявку, если вы хотите помочь нам построить экономическую инфраструктуру Интернета.