Laravel&Vue CRM.10: PHPUnit, автотесты

Поділитися
Вставка
  • Опубліковано 2 лют 2025

КОМЕНТАРІ • 63

  • @maxshaian7260
    @maxshaian7260 3 роки тому +4

    Во время разработки я все же рекомендую настроить phpunit на phpstormе. Artisan test хорош именно запустить чужой код, а при написании тестов и проверки, он не удобный, по сравнению с возможностями IDE, там и подсветка, и сравнение результатов, и кликабельные ссылки на код и перезапуск проваленных и еще много других фишек.
    Настраивается он достаточно просто, так как у Laravel в vendorе уже есть phpunit/phpunit и можно прям на него ссылку указать на исполняемый файл.
    Хорошая работа, молодцы, что делаете видео. Свои комментарии чисто как советы даю:)

    • @rdavydov
      @rdavydov  3 роки тому +1

      Да. Просто для начинающих проще из партизана запустить. Кстати не пробовал ещё и фильтры в artisan test. Из шторма горячими клавишами можно запустить вообще только конкретный тест )
      Спасибо за отзыв, стараюсь )

    • @maxshaian7260
      @maxshaian7260 3 роки тому

      @@rdavydov да, там при чем и подсветка будет, какой прошел. какой нет, и тест и файл и папку. Очень удобно.

    • @everything_is_simple8
      @everything_is_simple8 2 роки тому

      @@maxshaian7260 там и подсветка кусков кода который повторяется в файлах

  • @sergeyromanov1920
    @sergeyromanov1920 2 роки тому +1

    Спасибо большое, за хорошо разъясненную тему про тесты, давно хотел понять, что это такое вообще, данный урок это хорошо раскрывает.

  • @paulbundy07
    @paulbundy07 3 роки тому +1

    Ютуб порекомендовал это видео, давно искал такие уроки. Спасибо за ваши труды, жду продолжения.

    • @rdavydov
      @rdavydov  3 роки тому

      Спасибо Ютюбу)

  • @liteleak4049
    @liteleak4049 3 роки тому +2

    Жду обзор на DataGrip от тебя, я думаю ты сделаешь это, как всегда, круто.
    Спасибо за урок!

    • @rdavydov
      @rdavydov  3 роки тому

      А чего его обозревать? Типа горячие клавиши и остальное? Там фишка в том, что действует очень многое из шторма

    • @liteleak4049
      @liteleak4049 3 роки тому +2

      @@rdavydov дружище, да просто что то расскажи, какая бы примитивная тема не была, открываю твоё видео и узнаю что то прям классное, тем более на руютубе оч мало по датагрипу инфы, ну расскажи что там из пхпштрма взято, я например, не знаю

    • @rdavydov
      @rdavydov  3 роки тому +2

      @@liteleak4049 Окей )

  • @maxshaian7260
    @maxshaian7260 3 роки тому +2

    Ну и целом комментарий по тестам. Мне кажется на текущем примере вы создаёте именно unit тестирование, проверяя работу методов класса Модели на определенном объекте. То есть привязываетесь к конкретной реализации классов, и если захотите перекомпоновать методы, изменить их, или вообще проверку вынести в какой-нибудь сервис (например policy), то тесты придется переписывать.
    В unit тестах нет ничего плохого пока вы тестируете библиотеки с реализацией определенных интерфейсов, а вот для целого приложения больше подходят функциональные тесты.
    А именно. К примеру в программе вы выводите какой-то результат в зависимости от статуса тикера. Лучше написать тест, что если мы создали тикеры, к примеру, а потом над некоторыми провели операции, то они должны перестать быть новыми и надо проверить, что на выводе кого-нибудь запроса они будут отсутствовать. Тогда вы отвязываетесь от конкретной реализации, а тестируете только конечный функционал для пользователя. И если у вас изменятся названия методов и логика проверки, то тест по прежнему должен проходить успешно, чем Вы и сэкономите время на проверки правильности работы приложения.
    Если вкратце, вы когда пишете код, вы всегда проверяете его работу. СОздаете что-то, отправляете запросы, смотрите результат. Возложите эти задачи на тесты.

    • @allay138
      @allay138 Рік тому

      Наверно интеграционное тестирование

    • @maxshaian7260
      @maxshaian7260 Рік тому

      @@allay138 наверное да. но вообще терминологии много. обычно интеграционное тестирование оно меньше про проверку конкретной логики, но больше про проверку работы в конкретной среде (к примеру с реальным сервером базы данных).
      Но как я сказал терминология может даже в разных командах отличаться

  • @romanbush5164
    @romanbush5164 Рік тому +2

    Спасибо, а то хочется писать через тестирование, и читал про это, но как применять неизвестно было)

  • @maxshaian7260
    @maxshaian7260 3 роки тому +1

    1) В фабрике role_id зачем передается closure? Можно просто написать 'role_id' => Role::inRandomOrder().
    2) Сразу же возвращаете id, а что если таблица пустая, вернется ошибка. Если это не противоречит логике, то норм
    3) Статические методы идут без подсказок PHPStormа. Рассматривали ide_helper?

    • @rdavydov
      @rdavydov  3 роки тому

      1. А это не глобальный скоуп без вызова самого запроса? Вернёт ли он чего? Или вопрос именно в целесообразности анонимки?) Если работает без неё в 8ке - значит не досмотрел обновления с более старых версий)
      2. Не понял, про какое место идёт речь? Про ту же анонимку? Подразумевается запуск сидов перед тестом
      3 как-то пока к нему не пришёл. Пробовал давно, чем не понравился или не устроил - не помню)

    • @maxshaian7260
      @maxshaian7260 3 роки тому

      @@rdavydov 1. В данном случае это просто фишка php. Вы организуете ассоц массив и там в качестве значения можно прямо метод вставлять. first() - это метод, вызывается из класса модели, возвращает null, либо экземпляр модели. Поэтому closure тут лишнее. У вас по сути все то же самое, функция также возвращает данные.
      2. Вы потом по цепочке в этом же месте вызываете ->id. Тут не ошибка, просто first() может теоретически вернуть null(если ничего не найдет) и тогда php будет ругаться, что вы вызываете свойство id на null. Тут просто уточнение, что всегда должно заранее быть создана хотя бы одна запись в базе.
      3. Да, тут вкусовщина. Но ide не знает, что за статический метод вызывается, не знает, что он возвращает и как с ним работать. В итоге все автодописывания и подсказки не работают. Я видел еще реализацию через doc блоки на базовом классе модели. Описания же эти я по сути копировал из описания самих методов в фреймворке.

  • @maxshaian7260
    @maxshaian7260 3 роки тому +2

    По поводу тестовой базы данных. Чисто моя рекомендация, что если тест будет запускаться без установленной на localhostе базы данных и без созданной такой базы, или база вообще будет другая. Мне кажется лучше не привязываться к конкретному подключения а для тестов запускать на sqlite. Он локально создаёт файлы и все можно проверить, в итоге вообще не потребуется среда.

    • @rdavydov
      @rdavydov  3 роки тому

      С одной стороны - возможно. С другой - если проект сложный, отличия даже в версиях MySQL/MariaDB могут повлиять на выполнение кода/теста, чего уж говорить о другой СУБД. Хотя опять же, всё зависит от конкретного проекта.

    • @maxshaian7260
      @maxshaian7260 3 роки тому +1

      @@rdavydov согласен. Просто мое мнение, что раз учите новичков, то лучше чтоб тесты не были привязаны к среде разработки. А тут прям привязка к названию локальной базы данных и месте ее установки, поэтому мне и кажется, что sqlite настроенный по умолчанию в ларавеле куда лучше подходит для старта.

  • @ruslanaliyev4509
    @ruslanaliyev4509 3 роки тому +3

    Спасибо огромное еще раз за твой труд , надеюсь скоро ты достигнешь высот ютуба) как можно тебя найти в соцсетях ?

    • @rdavydov
      @rdavydov  3 роки тому

      Зачем я нужен то в соцсетях?)

    • @rdavydov
      @rdavydov  3 роки тому

      @Анатолий Димов да, уже пару лет основная наверное. Точнее как. Есть параллельно установленная на одном компе и есть только убунту на другом рабочем

    • @rdavydov
      @rdavydov  3 роки тому +1

      @Анатолий Димов меня останавливал софт для занятий с гитарой. Всё что есть на убунту - в очень плохом состоянии. Сейчас это не требуется - уже проще. офис есть (LibreOffice), фотошоп не нужен.. Торенты есть. Телеграм, скайп есть.. В общем-то никакой острой необходимости не испытываю. Разве что запускал старенькие игры типа HoMM 3 на винде) По разметке давно не парюсь: читал про то, что рекомендуют для SWAP-раздела выделять: сейчас есть смысл выделять 12-16гб в зависимости от оперативной памяти (меньше 16гб оперативной памяти - 12гб SWAP, 16 и более - 16), плюс ко всему сейчас это не раздел, а файл - увеличивается или меняется "на лету".
      А так - просто привыкать.. Мне сейчас винда кажется чем-то странным)

  • @mister_robot01
    @mister_robot01 3 роки тому +1

    Очень нравится, как вы объясняете) Я вот заметил, что вы присвоили свойство через ===, в чем разница ? Я понимаю, что так сравнивают и по типу, но не понял зачем здесь использовалось)

    • @rdavydov
      @rdavydov  3 роки тому

      Спасибо. По поводу проверки == и === там идёт проверка по типу при строгом равенстве (3 равно)
      Это не присвоение. А если в случае какой-то ошибки, в поле статус будет null и я буду использовать не строгое равенство - метод inNew вернёт true, хотя это будет не верно

    • @mister_robot01
      @mister_robot01 3 роки тому +1

      @@rdavydov понял, благодарю за ответ)

  • @Кочевник-р2е
    @Кочевник-р2е 3 роки тому +1

    я так понимаю интерфейс по плану на Vue JS ты хотел допилить?! или 10-й урок это финальный урок?

    • @rdavydov
      @rdavydov  3 роки тому

      Хотел на vue, да. пока времени нет и война идёт - да, последний ))

  • @ПавелПотапенко-щ2ж
    @ПавелПотапенко-щ2ж 3 роки тому +1

    Кто поможет? Запускаю тесты через php artisan test , а он мне пишет No tests executed! А при запуске прямо из файла все работает... (macOS/PHPStorm)

  • @georgiiklimov8689
    @georgiiklimov8689 3 роки тому

    Приветствую Роман, скажи пожалуйста, как можно с тобой связаться?

    • @rdavydov
      @rdavydov  3 роки тому

      Я оставил в почте почту romansdavydov@gmail.com

  • @dobrMAV
    @dobrMAV 3 роки тому +1

    На Laravel можно делать сайты?

    • @everything_is_simple8
      @everything_is_simple8 2 роки тому +1

      Это самый тупой вопрос который я видел на тему ларавела

  • @saintspirit
    @saintspirit 3 роки тому +1

    Я так понимаю что CRM уже готова?

    • @rdavydov
      @rdavydov  3 роки тому +1

      Нет. Но донатов нет, времени не хватает - потому пока не пишу дальше

  • @Кочевник-р2е
    @Кочевник-р2е 3 роки тому +1

    Это последний видео урок по хелпдеску?

    • @rdavydov
      @rdavydov  3 роки тому +2

      из записанного да. как будет время - продолжу

    • @Кочевник-р2е
      @Кочевник-р2е 3 роки тому

      @@rdavydov а ты будешь ещё выпускать уроки или пока всё? Было бы круто если бы у тебя был телеграмм канал где ты бы выкладывал новости и объявлял бы о том что ты подготавливаешь сейчас и какие выпуски ждать, а то так часто бывает что все подписчики ждут не зная чего и вообще чего ждут не знают))

    • @rdavydov
      @rdavydov  3 роки тому +2

      @@Кочевник-р2е пока немного сдулся. Но если часто пингуют - появляется желание ;)
      Постараюсь продумать в ближайшее время дальнейшие уроки

    • @Кочевник-р2е
      @Кочевник-р2е 3 роки тому

      @@rdavydov открой платный канал тогда

    • @rdavydov
      @rdavydov  3 роки тому +2

      @@Кочевник-р2е думаю что с 2,5к подписчиков такой функции нет

  • @ВладиславСергеевич-п6ж

    Вы Docker используете?

    • @rdavydov
      @rdavydov  3 роки тому

      Не сильно много. Точнее даже сейчас только для базы на локалке

  • @score_87
    @score_87 3 роки тому

    Автор вы куда пропали?

    • @rdavydov
      @rdavydov  3 роки тому

      Пока нет времени записывать дальше. Да и отклик меньше чем хотелось бы

    • @freez151
      @freez151 3 роки тому +4

      @@rdavydov Вас как оказалось не так просто найти, перерыл весь гугл в поисках русскоязычных курсов, то воспринимать лектора не возможно, то версии от актуальной картины сильно далеки, чудом ютуб выдал в рекомендациях ваш канал, и оказалось что тут кладезь полезной информации и многим видео более года, но поиск выдавал иностранный контент или откровенный шлак.
      До недавнего времени информации по версии выше 5.6 практически не было, на данный момент тема набирает популярность, много стало появляться видео по 8ке, но лучше ваших пока не видел)

    • @rdavydov
      @rdavydov  3 роки тому +3

      @@freez151 спасибо ) будет возможность - буду продолжать )

    • @score_87
      @score_87 3 роки тому +2

      @@rdavydov Ждём продолжения :)

  • @ctacello
    @ctacello 3 роки тому +1

    Рома привет, куда пропал? Где контент! Вернись, мы еще лайков накидаем!

    • @rdavydov
      @rdavydov  3 роки тому +1

      Лето заканчивается, и я почти готов продолжать )))

    • @ctacello
      @ctacello 3 роки тому +1

      @@rdavydov Отлично! Ждем.

    • @STALINGRADETS
      @STALINGRADETS 3 роки тому

      @@rdavydov Было бы интересно увидеть авторизацию/регистрацию

  • @saintspirit
    @saintspirit 3 роки тому +1

    А VueJS вообще будет?)

    • @rdavydov
      @rdavydov  3 роки тому

      Будет после бэкенда