TDD — Разработка через тестирования. Урок 2. Использование Stub объектов для Unit тестов

Автор Nadezhda Belousova
TDD — Разработка через тестирования. Урок 2. Использование Stub объектов для Unit тестов

здравствуйте мы переходим ко второму уроку разработки через тестирование в этом примере.

В этом уроке мы с вами разберем. Что такое внешнюю зависимость мы разберём. Какие недостатки есть внешние и как от неё избавиться также мы посмотрим, что такое объект.

И зачем они нужны и как их непосредственно использовать также мы будем говорить о dependency injection и поговорим о проблемах инкапсуляции при создание удобного куда-то удобного дизайна для тестирования сперва мы с.

Вами рассмотрим, что же такое внешний внешнюю зависимость мы будем называть неконтролируемое объект в нашей системы с которыми взаимодействует тестируемый код внешнего зависимостью может быть например файловой память службы и так далее и об этом уроке мы будем рассматривать объект файл менеджер который позволяет нам работать с файловой системы и вот тут у нас появляется проблема внешнюю зависимость — это File System система для нашего объекта файл менеджер и дело в том, что нам точно. Просто у нас не получится создать модульные тесты для тестирования нашего класса у меня остались в любом случае — это будет интеграционный тест на какой будем тестировать не только файл менеджер файловую систему наличия файла формата файла соотношение и так далее так далее так далее и для того чтобы избавиться от этой внешние зависимости мы с вами несколько шагов первое, что мы сделаем. Мы те методы которые работают с файловой системой вынесем в объект File Data ajax и она будет работать непосредственно с файловой системой осы объектами файл в общем этот объект мы будем с вами назвать косвенным слоем и составьте для избежания прямой зависимости от файловой системы мы сделаем так чтобы object File Data волчок можно было заметить неким с комплектом замены которые которые вы были называется объект. Для этого нам потребуется в объекте File Data attribute интерфейс с которым взаимодействует объектах файл менеджер это. Ты таксист таксист. Вот теперь у нас будет возможность заменить реальный объект File Data object который имеет который действительно работает своя система объектов которые на самом деле не работает с файловой системой те значения которые мы хотим которые мы хотим чтобы он возвращал — это нам всего лишь придётся создать класс который мы назовём Stat File Data класса нарисовать интерфейс и Data Access object вот тут можно уже считать, что мы с вами познакомились с тем, что такое объект. То есть сталбек — это будет у нас заглушка то есть на самом деле управляемая замена существующих зданий в зависимости в нашей системе объекты позволяют тестера вход без использования внешних зависимостей. Теперь давайте перейдем к следующему слайду и. В каких случаях как правило нас будет появляться внешнюю зависимость внешнюю зависимость у нас будет появляться в следующих ситуациях при создании объекта. А ясно указывается класс будет приводить к зданию внешняя зависимости также зависимости от аппаратно-программных платформ представление и лизации независимость и сильная связность у нас будет ждать следующие проблемы система будет сложно поддерживать расширять понимать и тестировать для того чтобы уходить от внешних зависимостей мы будем с вами придерживаться принципа этот — это абстрактный принцип который описывает способы написания слова связанного кода и из способов реализации данного принципа — это паттерн dependency injection — это патент который описывает в технику внедрение внешние зависимости компонента этот паттерн имеет большое количество преимуществ среди которых разделение конфигурации конфигурирования и использования объектов уменьшение связи между объектами com-объекты проще заменять увеличение мобильности модулей и также при реализации этого. Поттер на нашей стене будет система проще будет проще сопровождать и тестировать. Существует несколько способов внедрение зависимостей — это внутренний через конструктор внедрение через свойства измерения через интерфейсы и для того чтобы удобно зависимости мы будем с вами пользоваться документами injection контейнерами контейнер представляет собой набор объектов позволяющий упростить и автоматизировать процесс написания кода с использованием 30 вершин of Control. Долина продемонстрированы примеры внедрения различных техник внедрения зависимостей первая техника там посмотрим — это внедрение через конструктор будем работать с тем же классом файл менеджер котором мы с вами говорили да — это в классе File Manager мы создадим конструктор который будет принимать значение типа int Data Access object во время создания тестов для нашего класса в котором есть внедрение завести через конструктор у нас будет возможность заменить реальный. Объект который реализует интерфейсы Data Access object работает с файловой системой. Позвонить наст. Объект который на самом деле имеет те же методы. Но их реализации эффективного то есть самом деле этот объект не работает напрямую с файловой системы просто возвращает все значения которые нам нужны. Миша мы видим с вами вызов методов стал объектом обратиться объекте которого мы передали в качестве параметра конструктора и просто-напросто вызвать метод bitfi, что он будет делать — это уже зависимость зависит от конкретной реализации. Так, что возможно внедрение зависимостей через свойства в данном примере мы с вами создали свойства объекта типа — это аксессуары в стиле нашего класса файл менеджер стерилизовали в нём.

0 комментариев
0

Читайте также