Oleksii
молодец :)
Nikita
в js у меня такого не было. Каждая новая библиотека, новая высокая стена
Oleksii
Ну в этом прелесть Go
Oleksii
Straightforward он :)
Oleksii
Если у кого-то будет время или желание, то прошу ревьювнуть код опять, я там много всего переписал, чтобы побольше с многопоточностью поработать и убрать все старые leaks и т.д.
Буду благодарен :)
https://github.com/alexsadliak/gpm-stats
Anonymous
https://github.com/alexsadliak/gpm-stats/blob/master/main.go#L99
а точно в случае ошибки все отработает ок? закрытие канала shutdown в частности? https://github.com/alexsadliak/gpm-stats/blob/master/main.go#L99
1 простенький тест на все это с интерфейсом вместо прямого вызова конкретных ф-ций (readIntoStruct например)
дал бы ответ о работоспособности и без ревью
Oleksii
Valentin
Вообще лучше сначала тесты, а потом код...
Valentin
Не панацея, но приучивает писать более-менее нормальный код и повышает его качество
Valentin
Упрощает рефакторинг
Oleksii
Я возьму это к сведению, научиться это делать без проблем точно надо
Oleksii
Nikita
а как писать тесты для кода в котором я запрашиваю одни данные с сервиса, потом подключаюсь к другому серверу и посылаю ему данные с первого. Я просто в js никогда тесты не писал, поэтому хз
Diasko
Oleksii
Oleksii
Зависимо от того, что ты тестируешь
Nikita
ну я поставил себе 2 либы
Nikita
либа для телеграмма бота и либа для твича
Nikita
сначала данные с твича получаю, потом в бот посылаю
Nikita
я просто должен предзаполнить структуры, так?
Nikita
и их тестить
Valentin
Смотря как написан код. Если твой модуль на вход принимает распарсенную структуру, и на выходе отдаёт структуру для телеграмм, то суешь предзаполненные структуры и на выходе сравниваешь с ожидаемым
Valentin
Для теста самого слушателя твитча пакет httptest
Oleksii
Часто полезно создать интерфейс, который бы имел контракт такой, чтобы сервис его удовлетворял. А потом создать новую структуру FakeService и для неё заимплементить нужное поведение и использовать в тестах, подсовывая вместо конкретной реализации.
Nikita
https://github.com/knspriggs/go-twitch
Nikita
вот этот пакет юзаю
Nikita
а, в нем можно прокинуть свой httpClient
Nikita
хм, попробую вечером.
Daniel
не панацея, конечно
Daniel
и сам tdd, вроде, сдулся
Daniel
но это не значит, что писать юнит-тесты не надо
Anonymous
причем тесты в го - это ведь и тесты на рейс и бенчмарки
Anonymous
куда без этого вообще?
Daniel
ну вот у меня примерно половина всего - тупой прокси из запроса в базу
Daniel
что тут можно потестить?
Anonymous
Daniel
эмм... какое слово непонятно?
Oleksii
Daniel
смотрите
основная польза юнит-тестов - предотвратить (обнаружить) деградацию при фиксе багов.
при добавлении фич и рефакторинге - они тоже полезны, но меньше, потому как тоже должны быть переписаны.
поэтому "я планирую все потестить" юнит-тестов не отменяет
Anonymous
при добавлении всего проекта как понять что он удовлетворяет? только тестами
Anonymous
в итоге получается нужны при любой работе с кодом
Anonymous
с го это особенно актуально, юниттесты довольно “близко” к коду, как кроме них понять про всякие локи, освобождение ресурсов и пр - снаружи это никогда не увидеть
Daniel
ну вот это уже интеграционные тесты, а не юнит
Anatoly
Но ведь TDD это не про "писать или не писать тесты", а про то что"писать тесты в начале, а не в конце".
Oleksii
Anatoly
Вот что-то около того крутится
Anatoly
Не умею в TDD, да и этот подход не панацея
Anatoly
не панацея, конечно
Anatoly
и сам tdd, вроде, сдулся
Anatoly
но это не значит, что писать юнит-тесты не надо
Daniel
и?
Oleksii
Отсуствие TDD != отсуствие тестов
Anatoly
И я о том
Nikita
найс выводы
Michael
отсутствие тестов != отсутствие TDD
Daniel
это как это?
Konstantin
но это не точно)
Dmitriy
Как можно обнулить массив ?
Daniel
массив или слайс?
Konstantin
Daniel
обнулить или заместить обнуленным?
Dmitriy
Спасибо.
Dmitriy
Помогло
Infohunt
у кого есть "Пишем "социальную сеть" на go " с первой части?
Infohunt
а то на ютубе только с 9ой
Daniel
при чем тут имя
Daniel
термин "обнулить" вызывает вопросы
Daniel
а еще я подозреваю путаницу междв массивом и слайсом
Konstantin
вы очень суровый)
Daniel
не, просто не готов отвечать на вопросы, которых не понимаю
Konstantin
Nikita
разве массив можно очистить?