Доброго времени суток. Уже больше года работаю с Laravel (именно работаю), достаточно неплохо знаю многие аспекты и самого фреймворка и PHP, но до недавнего времени не был знаком с unit-тестированием на php, и в частности в laravel.
Начал осваивать, пробовать. Вроде всё понятно, но возник вопрос, можно ли как-то тестировать самописные artisan-команды?
Заранее благодарю за ответы:)
А я бы это назвал примером интеграционных тестов. В тесте public function testSuccess() вы по сути проверяете работу базы данных и БД классы, который и без того должен быть покрыт тестами от разработчиков фреймворка.
Для небольшого проекта это небольшая беда. А вот для среднего или сложного вы будете очень долго ждать выполнения всех тестов, если они так будут написаны. Максимум что я видел - больше 12 часов...
Для того чтобы превратить это в более чистый и быстрый unit в класс App\Console\Commands\CreateUser
надо было бы передать свой UserService $service и проверить, что будет вызов метода create и с какими параметрами. Что правда и для UserService потом придётся тестов написать похожим способом, чтобы не дублировать тестирование App\Entities\User.