Ale
мой типичный флоу: тест, простой код, тест, простой код, аааа бля, остальной код
Ale
типичный, хаха
Roman
приветствую а что по написанию тестов вообще в принципе можно почитать?
Ale
Кента Бека
Ale
мой типичный флоу: тест, простой код, тест, простой код, аааа бля, остальной код
просто вот начинаешь писать тесты, структура уже так себе, ты рыдаешь пытаешься править, падают тесты, правишь, психуешь, вставляешь костыль, едешь дальше
Ale
а понять где свернул не туда не получается :((
Roman
Кента Бека
cпасибо
Ale
утешаю себя тем, что скоро научусь)
guga
Ну они хотя бы есть 😂
Rodion
при работе с behat приходится намеренно стараться не писать функциональные тесты
Rodion
а именно приемочные
Ale
Ну они хотя бы есть 😂
ага, мол уже следующая ступенька))
Rodion
для этого на gherkin их должен писать заказчик или QA в идеальном мире)
Ale
оунер, qa и девелопер
Ale
и да, строишь dsl
Rodion
??
Ale
не заказчик и qa, а заказчик, qa и девелопер
Ale
втроем
Sergey
gherkin это не цель, это просто формат записи обсуждения фич
Ale
это идеальный мир кукумбера
Sergey
и сила земпли
Ale
gherkin это не цель, это просто формат записи обсуждения фич
но вообще да, последний раз мы просто накидал сценарии при обсуждении и простыми фразами че да как
Ale
а потом к следующему митингу это уже в геркин просто переписали
Ale
но вообще да, последний раз мы просто накидал сценарии при обсуждении и простыми фразами че да как
накидали сценарии = дали им имена какие-то и краткое описание, потом по памяти на след. день или позже восстановил шаги геркином и еще раз глянули вместе позже
Sergei
Разъясните для тех кто в танке - что такое "геркин"?
Максим
https://habrahabr.ru/post/275013/
Ale
Разъясните для тех кто в танке - что такое "геркин"?
на пхп его юзает behat, в js/ruby cucumber. Для остальных не запоминал
Sergei
Спасибо.
Sergei
Читаю.
Ilia
на пхп его юзает behat, в js/ruby cucumber. Для остальных не запоминал
Кукмбер штук на 10 языков уже портирован.
Ale
Кукмбер штук на 10 языков уже портирован.
ну он там по-разному где-то называется, я не запоминал
Ilia
В статье все верно написано)) говорю как тестировщик пишущий на геркине. Единственное место которое теряется, юзер стори (юз кейс), именно эта вещь является для всех троих общей и полезной инфой!
🐴
Я решил поупражняться в ООП. В чем у меня проблемы? https://github.com/f3ath/release-notes-generator?files=1
Nikolay
static, методы на кучу строк
Sergey
Tags::fetchRemote($remote); вообще не в тему
Sergey
процедурщина какая-то
Sergey
fromGit который лезет в систему тоже не айс как-то
Ale
Я решил поупражняться в ООП. В чем у меня проблемы? https://github.com/f3ath/release-notes-generator?files=1
https://github.com/f3ath/release-notes-generator/blob/master/src/Config.php#L4 в наследовании ))
Ale
опиши use cases
Sergey
тестов бы
Ale
тестов бы
это следующий шаг
guga
это следующий шаг
А должен быть первый :trollface:
Sergey
Ale
А должен быть первый :trollface:
Не, вначале кейс, его описание
Sergey
что тесту мешает быть кейсом?)
Ale
что тесту мешает быть кейсом?)
А, ну давайте определимся с терминами
Ale
что тесту мешает быть кейсом?)
Потому что для меня кейс "хочу кнопку сделать хорошо". Уходим в детали и получаем сценарии
Sergey
https://github.com/f3ath/release-notes-generator/blob/master/src/Git/Commit.php#L29
Sergey
нарушено разделение ответственности и srp
Sergey
https://github.com/f3ath/release-notes-generator/blob/master/src/Git/RevisionRange.php
Sergey
легкое нарушение srp
Sergey
короч как и у 99% программистов - от легкого до средней тяжести нарушение srp
Sergey
Не, вначале кейс, его описание
ты про юзкейс/юзерстори? Да, сначала это. Сначала надо определиться зачем и что нам надо. А сами тест кейсы это уже да, критерии приемки
🐴
Нормально ли использовать hashmap (в php - массивы) в качестве DTO?
Sergei
Что fetchRemote(string $remote) делает? (я слаб в php)
Sergei
Мммм а результат куда-то возвращаестя, суть в том что оно менят состояние sandbox? (похоже на это)
🐴
ytn
🐴
меняет состояние внешней системы
🐴
результата нет
Sergei
ясно тогда, спасибо
Sergei
Читаю дальше
🐴
я так понимаю основных претензии к дизайну две - не тестируемо и нарушен SRP
🐴
попробую переделать
🐴
выделить интерфейс доступа ко внешней системе (гиту)
🐴
я так понимаю это будет Gateway PAttern
🐴
методы будут либо воздействовать на систему либо возвращать DTO
🐴
сука тяжело учиться
Sergei
поделюсь и я своими соображениями
Sergei
"большой плюс", что я php понимаю почти что никак :)
Sergei
1) мне было сложновато уловить логику взаимосвязей классов - например Commit можно сконструировать "из sandbox", а так же получить из RevisionRange
🐴
угу
Sergei
2) мне так же было не совсем ясно, чем собственно мы управляем? мне была бы наверное понятнее логика типа "есть sandbox и мы управляем им", что-то такое: class GitSandbox{ UpdateSandbox(revision); List<ChangelistDescription> ListRevisionsInRange(date1, date2); UpdateToTag(Tag); } class Tag { .... } class ChangelistDescription{ .... }
🐴
понял