Польза автоматизированного тестирования ПО в целом широко известна. Однако иногда тесты могут помочь улучшить код неожиданным образом.
Находишь баг, думаешь: вот сейчас не буду кривляться, сделаю как надо — напишу тест на баг и по тесту буду чинить. Разбираешься, придумываешь тест, пишешь его, запускаешь. И внезапно понимаешь, что в тестируемом функционале есть ::orderBy(DB::raw('RAND()'))
— mysql-зависимый запрос. А в Laravel тесты запускаются на sqlite.
Но время-то на тест уже потрачено, его жалко. Как теперь не написать правильный, не зависимый от драйвера БД код.