BonBonSlick
@BonBonSlick
Vanilla Full Stack Web Architector

Как быть, структуризировать dummy / mock / stub для тестов?

https://phpunit.readthedocs.io/en/7.4/test-doubles.html

Ето не стаб или мок, нет нужды. простой обьект с данными. Естественно его создание тестируеться отдельно. Однако другие обьекты которые от него зависят все же нуждаються в нем. Пример

new User(new Username('вася'), new UserRole(new UserRoleName('админ')));

И потом я тестирую есть ли VO и их значения.
Как быть с VO?

По сути есть UsernameTest котрый проверяет работает ли VO, однако по всем тестам разбросаны ети VO по скольку очень многое зависит от них, поетому возникает вопрос правильно ли делать так?
Возможно стоит сделать какой то трейт и создать один единственный мок / стаб и использовать етот трейт везде где используеться етот VO для тестов?

И что на счет UserRole, ведь ето уже обьект который связан с юзером, у него так же есть свои VO и отдельно тесты на свои VO, методы. Однако почти такой же вопрос, как относиться к таким обьектам?
Куда их расположить? Нормально ли это что везде где тест с юзером идет такое создание dummy UserRole?
Или все же выносить вообще все куда то в стабы и моки, однако куда? Dедь они используються в разных тестах модулей

  1. Основная проблема, если падает тест к примеру создания UserRole или его UserRoleName то многие тесты которые связаны с ролью и юзерами будут падать даже если ошибка в тесте на создание UserRoleName.
  2. Сейчас везде разбросано new new new new... нет единого места для создание stubs / mocks / dummy,
$test = new IndependentClass(new SomeCLass(new SomeCLass('test'), 
new SomeCLass('test'), new SomeCLass('test'), new SomeCLass('test'));


$dependsOnTestClass = new DependsClass(new SomeCLass(new SomeCLass('test'),
new SomeCLass('test'), new SomeCLass('test'), $test ));
  • Вопрос задан
  • 57 просмотров
Решения вопроса 1
@oxidmod
Зачем мокать или стабать ВО?
Используйте оригиналы и не парьтесь
Ответ написан
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Войти через TM ID
Похожие вопросы