Рубрики
Без рубрики

Тестовый объем и изоляция с мощими

Часто обсуждается лучший способ описания того, что представляет собой «единицу» при тестировании подразделения. Минусы … Помечено JavaScript, тестирование, архитектура, реагировать.

Часто обсуждается лучший способ описания того, что представляет собой «единицу» при тестировании подразделения. Учитывая, что объем тестов является важной частью структуры кода и дополняющуюся, как реализация сгруппирована.

Структура – это один аспект программного обеспечения, также должны быть зависимости. Зависимости все еще существуют даже при пояснице с договорами (например, 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”