Какая разница между определением вспомогательных методов в Unit.php и UnitTester.php в Codeception?

В модульных тестах Codeception все методы public, определенные в Unit.php и UnitTester.php, доступны в $this->tester.

Некоторые файлы поддержки для модульных тестов Codeception:

tests/_support/_generated/UnitTesterActions.php
tests/_support/Helper/Unit.php
tests/_support/UnitTester.php

$this->tester является экземпляром UnitTester. UnitTester.php uses _generated\UnitTesterActions который сам встраивает в него методы из Unit.php при инициализации тестов. Помимо того, что IDE не может разрешить методы в $this->tester до тех пор, пока тесты не будут запущены, в чем разница? Существует ли лучшая практика или это просто дело вкуса? Почему есть два разных способа сделать одно и то же?


person CJ Dennis    schedule 25.11.2019    source источник


Ответы (1)


На самом деле я не знаю, почему в класс UnitTester можно добавлять методы, но они менее пригодны для повторного использования.

Методы, определенные в классах помощников, можно использовать в разных наборах, включив их в качестве модулей.
Нет причин ограничивать имена помощников именами наборов, вы можете иметь специализированные помощники с хорошо названными именами, такие как Helper\Authentication, Helper\Rainbow, и т.п.

person Naktibalda    schedule 26.11.2019