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 например) дал бы ответ о работоспособности и без ревью
Valentin
Вообще лучше сначала тесты, а потом код...
Oleksii
Вообще лучше сначала тесты, а потом код...
Не умею в TDD, да и этот подход не панацея
Valentin
Не панацея, но приучивает писать более-менее нормальный код и повышает его качество
Valentin
Упрощает рефакторинг
Oleksii
Я возьму это к сведению, научиться это делать без проблем точно надо
Diasko
Я возьму это к сведению, научиться это делать без проблем точно надо
Или после завершения части функционала пиши простенький тест, а пото в привычку войдет)
Nikita
а как писать тесты для кода в котором я запрашиваю одни данные с сервиса, потом подключаюсь к другому серверу и посылаю ему данные с первого. Я просто в js никогда тесты не писал, поэтому хз
Oleksii
Зависимо от того, что ты тестируешь
Nikita
ну я поставил себе 2 либы
Nikita
либа для телеграмма бота и либа для твича
Nikita
сначала данные с твича получаю, потом в бот посылаю
Nikita
я просто должен предзаполнить структуры, так?
Nikita
и их тестить
Valentin
Смотря как написан код. Если твой модуль на вход принимает распарсенную структуру, и на выходе отдаёт структуру для телеграмм, то суешь предзаполненные структуры и на выходе сравниваешь с ожидаемым
Valentin
Для теста самого слушателя твитча пакет httptest
Oleksii
Часто полезно создать интерфейс, который бы имел контракт такой, чтобы сервис его удовлетворял. А потом создать новую структуру FakeService и для неё заимплементить нужное поведение и использовать в тестах, подсовывая вместо конкретной реализации.
Nikita
https://github.com/knspriggs/go-twitch
Nikita
вот этот пакет юзаю
Nikita
а, в нем можно прокинуть свой httpClient
Nikita
хм, попробую вечером.
Anonymous
Не умею в TDD, да и этот подход не панацея
я столько говна нахожу тестами, так что имхо - панацея
Daniel
не панацея, конечно
Daniel
и сам tdd, вроде, сдулся
Daniel
но это не значит, что писать юнит-тесты не надо
Anonymous
причем тесты в го - это ведь и тесты на рейс и бенчмарки
Anonymous
куда без этого вообще?
Daniel
ну вот у меня примерно половина всего - тупой прокси из запроса в базу
Daniel
что тут можно потестить?
Daniel
эмм... какое слово непонятно?
Oleksii
что такое тупой прокси из запроса в базу?
Насколько я понимаю, endpoint -> db
Oleksii
но это не значит, что писать юнит-тесты не надо
Я не говорю, что не надо, планирую же потестить всё. Локально имеются несколько тестов.
Daniel
смотрите основная польза юнит-тестов - предотвратить (обнаружить) деградацию при фиксе багов. при добавлении фич и рефакторинге - они тоже полезны, но меньше, потому как тоже должны быть переписаны. поэтому "я планирую все потестить" юнит-тестов не отменяет
Anonymous
при добавлении всего проекта как понять что он удовлетворяет? только тестами
Anonymous
в итоге получается нужны при любой работе с кодом
Anonymous
с го это особенно актуально, юниттесты довольно “близко” к коду, как кроме них понять про всякие локи, освобождение ресурсов и пр - снаружи это никогда не увидеть
Daniel
ну вот это уже интеграционные тесты, а не юнит
Anatoly
Но ведь TDD это не про "писать или не писать тесты", а про то что"писать тесты в начале, а не в конце".
Anatoly
Вот что-то около того крутится
Anatoly
Не умею в TDD, да и этот подход не панацея
Anatoly
не панацея, конечно
Anatoly
и сам tdd, вроде, сдулся
Anatoly
но это не значит, что писать юнит-тесты не надо
Daniel
и?
Oleksii
Отсуствие TDD != отсуствие тестов
Anatoly
И я о том
Nikita
найс выводы
Michael
отсутствие тестов != отсутствие TDD
Daniel
это как это?
Konstantin
но это не точно)
Dmitriy
Как можно обнулить массив ?
Daniel
массив или слайс?
Daniel
обнулить или заместить обнуленным?
Dmitriy
Спасибо.
Daniel
arr =arr[:0]
если arr - массив, будет ошибка
Dmitriy
Помогло
Infohunt
у кого есть "Пишем "социальную сеть" на go " с первой части?
Infohunt
а то на ютубе только с 9ой
Konstantin
если arr - массив, будет ошибка
да, имя немного не корректное)
Daniel
при чем тут имя
Daniel
термин "обнулить" вызывает вопросы
Daniel
а еще я подозреваю путаницу междв массивом и слайсом
Konstantin
вы очень суровый)
Dmitriy
термин "обнулить" вызывает вопросы
Ну мне нужно чтобы он при вызове полностью очищался
Daniel
не, просто не готов отвечать на вопросы, которых не понимаю
Daniel
Ну мне нужно чтобы он при вызове полностью очищался
что такое "очищался"? особенно в сочетании с массивом
Nikita
разве массив можно очистить?