Size: a a a

Laravel для начинающих

2021 March 02

AH

Andrey Helldar in Laravel для начинающих
В качестве примера
источник

AH

Andrey Helldar in Laravel для начинающих
О пользе тестов

Делал сегодня огромный рефакторинг. Перелопатил под сотню файлов и тысячи строк. Очень сильно упростил внутреннюю структуру авто-дополнений Laravel Idea. Всё стало проще и красивее и быстрее и появилась возможность реализовывать кастомные авто-дополнения, в общем одни плюсы, но суть не в этом.

Я запустил после всего этого тесты и один из них упал. Я быстро нашёл мелкий баг (там банально не ту переменную заюзал). Если бы этого теста не было - оно ушло бы в релиз и его заметили бы пользователи. То, что работало раньше и перестало после рефакторинга, называется регрессионным багом. Основная польза тестов именно в этом! Они позволяют находить баги регрессии на очень ранней стадии, позволяя смело делать даже крупные рефакторинги.

Понимаю, что повторяю то, что вы уже раз 10 читали где-то, но сегодня прям типичный случай со мной произошёл.
источник

RK

Roman Kolosov in Laravel для начинающих
Andrey Helldar
Ещё момент. Условно у тебя круд на всё те же названия городов.
Вот ты написал на них тесты, проверяющие совпадения и они отрабатывают как надо. Точнее, приложение работает как надо.
В какой-то момент ты рефакторишь участки кода и тесты заваливаются, хотя не должны. Тесты менять нельзя - они правильные. Значит, ищем проблему в коде, где что перерефачили)
бля ну писать в TDD я просто не могу, ну не понимаю как это, сколько раз не пытался
источник

RK

Roman Kolosov in Laravel для начинающих
очень крутая парадигма
источник

RK

Roman Kolosov in Laravel для начинающих
но как-то ее по другому воспринять чтоли нужно
источник

RK

Roman Kolosov in Laravel для начинающих
может для нее нужно какое-то конечно знание чтоли сначала
источник

AH

Andrey Helldar in Laravel для начинающих
Roman Kolosov
бля ну писать в TDD я просто не могу, ну не понимаю как это, сколько раз не пытался
Я хз что это и как в нём выглядит код))
источник

RK

Roman Kolosov in Laravel для начинающих
test-driven development
источник

RK

Roman Kolosov in Laravel для начинающих
сначала пишешь тесты
источник

RK

Roman Kolosov in Laravel для начинающих
потом покрываешь их кодом
источник

AH

Andrey Helldar in Laravel для начинающих
Roman Kolosov
test-driven development
Я имел ввиду как это выглядит под капотом. Как писать и т.д.. В чём практическое применение.
источник

AH

Andrey Helldar in Laravel для начинающих
Roman Kolosov
потом покрываешь их кодом
Звучит как "проект для себя". На практике часто бывает так, что заёбываешься тесты переписывать под изменение логики, а она меняется и очень часто. Поэтому писать код под тесты заведомо гиблое дело.
источник

RK

Roman Kolosov in Laravel для начинающих
Andrey Helldar
Я имел ввиду как это выглядит под капотом. Как писать и т.д.. В чём практическое применение.
ну вот да, и все же правильно ли я понимаю ,ты бывает сначала пишешь тест, а потом добиваешься того, что бы код проходил верификацию этим тестом?
источник

AH

Andrey Helldar in Laravel для начинающих
Roman Kolosov
ну вот да, и все же правильно ли я понимаю ,ты бывает сначала пишешь тест, а потом добиваешься того, что бы код проходил верификацию этим тестом?
В каких-то случаях да. На своей практике ни разу не встречал нужды такого подхода.
Скорее наоборот, встречал проекты где TDD находится в графе "как НЕ нужно делать".
источник

RK

Roman Kolosov in Laravel для начинающих
ну вот это и есть TDD
источник

RK

Roman Kolosov in Laravel для начинающих
его считают самым безопасным методом разработки
источник

SC

Sergey Chizhik in Laravel для начинающих
Andrey Helldar
Условный кейс для круда: запись с названием города.
Что здесь можно тестировать?

А вот что:
1. Города с одинаковым именем в рамках разных стран;
2. Города с одинаковым именем в рамках одной страны (скажешь невозможно? Отнюдь! Город Чита. Я из города Чита Забайкальского края РФ. А ещё город Чита есть в республике Татарстан, который тоже является субъектом РФ);
3. Попытка создания города с одинаковым названием, но используя разную кодировку - "Чита", "Читa" (во втором примере "а" - латиница);
4. Попытка ввести китайский иероглиф, например;
5. Попытка ввести емоджи (Чит😄);
6. Попытка ввести каомоджи (¯\_(ツ)_/¯);
7. Попытка ввести пустую строку;
8. Попытка ввести слишком длинное название;
9. Попытка ввести SQL-инъекцию (Да, Лара под капотом защищает, но если какой-то умник решит выполнить DB::select('UPDATE cities SET (name) VALUES (' . $request->get('name') . ')'), то Лара не спасёт).
10. Попытка прокинуть файл в поле name при запросе обновления, например.

Если файл принимается, то нужно тестить mime типы - чтобы отсекал лишние файлы.

И это только то, что навскидку вспомнил.
(╯°□°)╯︵ ┻━┻)
источник

RK

Roman Kolosov in Laravel для начинающих
Andrey Helldar
В каких-то случаях да. На своей практике ни разу не встречал нужды такого подхода.
Скорее наоборот, встречал проекты где TDD находится в графе "как НЕ нужно делать".
хм, а какие были агрументы его не использовать?
источник

ВШ

Виталий Шутов... in Laravel для начинающих
Andrey Helldar
На курсы запишись.
Потом окажется, что это Тейлор всех разыгрывал многие годы
источник

ab

alex but in Laravel для начинающих
Roman Kolosov
да не, про то что я спросил зачем тесты на круд, и сам у себя в голове допер, так валидация, постоянно с ней возня как минимум
Эффект уточки
источник