Ale
мой типичный флоу: тест, простой код, тест, простой код, аааа бля, остальной код
Ale
типичный, хаха
Roman
приветствую
а что по написанию тестов вообще в принципе можно почитать?
Ale
Кента Бека
Ale
мой типичный флоу: тест, простой код, тест, простой код, аааа бля, остальной код
просто вот начинаешь писать тесты, структура уже так себе, ты рыдаешь пытаешься править, падают тесты, правишь, психуешь, вставляешь костыль, едешь дальше
Ale
а понять где свернул не туда не получается :((
Roman
Ale
Ale
утешаю себя тем, что скоро научусь)
Ale
guga
Ну они хотя бы есть 😂
Rodion
при работе с behat приходится намеренно стараться не писать функциональные тесты
Rodion
а именно приемочные
Rodion
для этого на gherkin их должен писать заказчик или QA в идеальном мире)
Ale
Ale
оунер, qa и девелопер
Ale
и да, строишь dsl
Rodion
??
Ale
не заказчик и qa, а заказчик, qa и девелопер
Ale
втроем
Sergey
gherkin это не цель, это просто формат записи обсуждения фич
Ilia
Ale
это идеальный мир кукумбера
Sergey
и сила земпли
Ale
а потом к следующему митингу это уже в геркин просто переписали
Sergei
Разъясните для тех кто в танке - что такое "геркин"?
Максим
https://habrahabr.ru/post/275013/
Sergei
Спасибо.
Sergei
Читаю.
Ilia
Ilia
В статье все верно написано)) говорю как тестировщик пишущий на геркине. Единственное место которое теряется, юзер стори (юз кейс), именно эта вещь является для всех троих общей и полезной инфой!
🐴
Я решил поупражняться в ООП. В чем у меня проблемы? https://github.com/f3ath/release-notes-generator?files=1
Nikolay
static, методы на кучу строк
Sergey
Tags::fetchRemote($remote); вообще не в тему
Sergey
процедурщина какая-то
Sergey
fromGit который лезет в систему тоже не айс как-то
Ale
Ale
опиши use cases
Sergey
тестов бы
Sergey
Ale
Sergey
что тесту мешает быть кейсом?)
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
Не, вначале кейс, его описание
ты про юзкейс/юзерстори? Да, сначала это. Сначала надо определиться зачем и что нам надо. А сами тест кейсы это уже да, критерии приемки
Ale
🐴
Нормально ли использовать 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{
....
}
🐴
понял