Признак хорошего тона — не делать ничего в конструкторе кроме того, что необходимо. А все, что необходимо, — это проверять предоставленные аргументы, а затем присваивать их в качестве значения для свойств сервиса.
Будете ли вы в дальнейшем менять или улучшать поведение класса посредством этой зависимости?
• Есть ли в поведении класса сложность, которую невозможно описать в нескольких строках кода?
• Работает ли функция с объектами вместо примитивных типов значений?
Если на большинство вопросов вы ответили «да», то определенно стоит превратить вызов функции в объектную зависимость. Дополнительным преимуществом станет то, что в тестах будет проще описывать ожидаемое поведение.
Assert (проверка) — оценка конечного состояния.
Базовая структура каждого метода выстроена по паттерну Arrange-Act-Assert:
• Arrange (подготовка) — приведение тестируемого объекта (также называемого SUT, subject under test) в определенное известное состояние;
• Act (действие) — вызов одного из его методов;
Передача объекта другому объекту в качестве свойства называется композицией объектов.
Как обращаться с зависимостями, мы рассмотрим подробнее в разделе 2.2. Сейчас же достаточно знать, что получение зависимостей из известного источника называется локализацией сервисов, а получение зависимостей в качестве аргументов конструктора — внедрением зависимостей.
Сейчас же достаточно знать, что получение зависимостей из известного источника называется локализацией сервисов, а получение зависимостей в качестве аргументов конструктора — внедрением зависимостей.
Чтобы определить, нужно ли создавать объектную зависимость, ответьте на следующие вопросы:
• Будете ли вы в дальнейшем менять или улучшать поведение класса посредством этой зависимости?
• Есть ли в поведении класса сложность, которую невозможно описать в нескольких строках кода?
• Работает ли функция с объектами вместо примитивных типов значений?
Базовая структура каждого метода выстроена по паттерну Arrange-Act-Assert:
• Arrange (подготовка) — приведение тестируемого объекта (также называемого SUT, subject under test) в определенное известное состояние;
• Act (действие) — вызов одного из его методов;
• Assert (проверка) — оценка конечного состояния.
Можно также задать методы, вызываемые без наличия экземпляра. Они называются статическими методами.