Часто обсуждается лучший способ описания того, что представляет собой «единицу» при тестировании подразделения. Учитывая, что объем тестов является важной частью структуры кода и дополняющуюся, как реализация сгруппирована.
Структура – это один аспект программного обеспечения, также должны быть зависимости. Зависимости все еще существуют даже при пояснице с договорами (например, apis, типы интерфейсов) или перевернуты (например, плагины, впрыск зависимости). Однако практика внедрения, такие как их, могут быть полезны для улучшения объема и изоляции испытаний.
В частности, при тестировании, проблемы с объемом и изоляцией могут привести к тестам с большим количеством настройки (например, издевательства), а несоответствия между тем, где реализация была изменена, и какие тесты были затронуты этими изменениями.
Юнис Предназначен для объединения концепций объема и изоляции, через более широкие концепции структуры и зависимости. Это делает это путем поощрения однонаправленных зависимостей вместо двунаправленного; Это включает в себя косвенные зависимости.
Этот пост – 2-е место после раннего исследования, которое исследуемое и продемонстрировало возможности вунис, используя EUNICE на исходном кодексе библиотеки JavaScript React:
” Анализируя архитектуру реагирования, ее структуру и зависимости, с мощими
” Код группировки с Юнисом “
В реакции наиболее значимым объемом структуры кажется Каталог пакетов в корне своего хранилища. К концу тематического исследования и 1-го наблюдения, после рассмотрения зависимостей, показанных на мочеиспускании, я определил потенциальный стек для каталога пакетов, это включало в себя новую группу для devtools. На прилегании пакетов были еще некоторые немалочные зависимости (красные стрелки up), на пакетах (стрелки за пределами серых погружений):
Просматривая код Regact, я заметил, что некоторые из пакетов, определяющихся двунаправленные зависимости, были только в его тестах. Это может быть исследовано путем изменения шаблона PATCH IGNORE, чтобы исключить тестовые каталоги:
npx eunice \ --ignore-path-pattern="(^(\.|babel.config.js|scripts|fixtures)|node_modules|__tests__)" \ --modify-stacks-file=.eunice-stack-modify.yaml \ --is-file-content-reversed=true \ --babel-parser-plugins=classPrivateProperties \ --babel-parser-plugins=classProperties \ --babel-parser-plugins=dynamicImport \ --babel-parser-plugins=flow \ --babel-parser-plugins=jsx
Переработка анализа и перезагрузки на веб-страническую страницу показывает, что с тестами игнорируются, количество подгруппов без двунаправленных зависимостей на область пакета не улучшилось. Обратите внимание, что EUNICE обнаружил, что React-Test-reender больше не нужно укладывать на отдельный уровень, и поэтому автоматически переместил его на уровень выше:
Оставшаяся красная несоответствующая зависимость стрелки через пакеты находятся из реагирования и реагированного сервера на реакцию. Изменение стека каталогов пакетов может в первую очередь получить все пакеты навышении зависимостей Uni-Disional. Это можно сделать, перемещая React-Flight и React-Server ниже React-DOM:
- - existing - - id: react-devtools-group dependencyPermeable: true items: - [ react-devtools, react-devtools-shell ] - [ react-devtools-core, react-devtools-inline ] - - react-devtools-extensions - - react-devtools-shared - [ react-art, react-interactions, react-refresh ] - - react-test-renderer - [ react-dom, react-native-renderer, react-noop-renderer ] - [ legacy-events, react-flight, react-reconciler, react-server ] - [ create-subscription, jest-mock-scheduler, jest-react, react-cache, react-is, react-stream, use-subscription ] - [ babel-plugin-react-jsx, eslint-plugin-react-hooks, react, react-debug-tools, scheduler, shared ]
Теперь мы можем видеть в Юинице, что единственные зависимости по всей пакетам подкаталоги являются теми из тестов, так как нет пакета, несовмешительными красными стрелками.
Игнорирование тестов в EUNICE показало потенциальную однонаправленную структуру, которая может работать для реализации. Тем не менее, в идеале и более навсегда тесты могут быть обновлены в реактивном коде для соответствия такой структуре, и поэтому будут представлены в анализе с важном, равным для реализации.
Узнайте больше в https://devsnicket.com/eusice.
Оригинал: “https://dev.to/grahamdyson/test-scope-and-isolation-with-eunice-47hn”