Хорошие практики тестирования в Laravel проектах?
Feature - это end-to-end тесты. Ты берешь данные, отправляешь на эндпоинт и проверяешь ответ/статус выполнения задачи. Из этого следует, что никаких под-директорий там быть не может - максимум одна для API, одна для Web, и, если сильно хочется, то одна для CLI. В таких тестах НЕ должно быть моков, подмены зависимостей или чего-либо еще, что мешает полному тестированию эндпоинта от начала и до конца.
Обычно пишу по одному на каждый эндпоинт, типа GamesListTest для /api/games.
Unit - юнит тесты. Должны тестировать один класс и мокать остальные зависимости. Тут можете тестировать отдельно контроллеры, джобы, репозитории, сервисы и что-либо еще, что вам вздумается. Все депенденси этих классов нужно подменять и проверять входные аргументы (как можно тщательней, mockery + hamcrest-php).
Тоже обычно по тесту на класс, то зависит от размера класса, о котором идет речь, и сложности его методов.
Всегда использую snake_case - так читаемей. assert'ов может быть хоть миллион - за этим вообще не слежу. Разбиваю тесты на методы чисто по логике и нужде - как проще, так и делаю. Лично у меня тесты лежат в "модулях", а не в /tests, но дефолтная структура - неплохой вариант для начала.
Для меня в идеале структура папки unit идентична src, в src разбиение по функционалу типа /product /cart и т.п., никаких Controllers/ и Models/ со свалкой всех контроллеров и и т.п.