Pavel
ну так докер контейнер можно поднять
Constantine️
ну ты че
Pavel
че?
Daniel
что значит мокать?
https://ru.wikipedia.org/wiki/Mock-%D0%BE%D0%B1%D1%8A%D0%B5%D0%BA%D1%82
Constantine️
это ж не для нас
Constantine️
мы любим сложности и коня в вакууме
Daniel
мы любим юнит-тесты, и не любим, когда они превращаются в интеграционные
engelbart
Вопрос как раз чо юзаете сами. Я вижу в моках некоторые преимущества, как в том числе и в stage базе тоже
engelbart
Но юнит тесты мне бы хотелось без зависимостей на докеры шмокеры и базы
Constantine️
какое преимущество у мока?
Daniel
ты хочешь протестировать поведение своей функции, а не системы с подъемом докера и вот этого всего
Constantine️
в вопросе бд
Pavel
лол
Constantine️
еще круче
Constantine️
а поограммисты код пишут?)
engelbart
я нагуглил два: https://github.com/golang/mock https://github.com/DATA-DOG/go-sqlmock
engelbart
но оба, особенно первый какие то страшеннькие
engelbart
или я не понимаю их
Pavel
Constantine️
я нагуглил два: https://github.com/golang/mock https://github.com/DATA-DOG/go-sqlmock
юзаем второй с посгресом иногда, детали не расскажу, я там код не пишу
Daniel
но оба, особенно первый какие то страшеннькие
а чего ты хочешь от бд-мока? чтобы он красивый был?
engelbart
Ну, красота ж спасет мир
Michael
немного странно мокать бд кмк
Michael
получится, что ты проверяешь мок и всё
Daniel
я проверяю то, что между моком и тестом
Daniel
есть подозрение, коллеги, что вы неправильно понимаете назначение юнит-тестов
Petr
получится, что ты проверяешь мок и всё
тогда удобнее мокать персист слой
Daniel
если вы разрабатываете по TDD - юнит-тесты просто часть методологии, они появляются еще до кода, и тут никакой докер рядом оказаться не может
Daniel
а если вы разрабатываете как обычно - основная функция юнит-теста это сообщать вам о том, что вы поломали поведение юнита при багфиксе или имплементации новой фичи
Daniel
и тут опять докер лишний
Vladimir
получится, что ты проверяешь мок и всё
проверять БД должны юнит-тесты самой БД
Vladimir
а не твой код
Vladimir
Michael а проверкой что у тебя всякие миграции и прочая фигня проходит - это уже к интеграционным тестам скорее
Vladimir
а не к юнит
Michael
это понятно
Michael
в чем выигрыш мока как в примерах https://github.com/DATA-DOG/go-sqlmock
Michael
не совсем понятно
Vladimir
в чем выигрыш мока как в примерах https://github.com/DATA-DOG/go-sqlmock
В том что тебе не надо поднимать инстанс базы данных
Vladimir
а значит что тесты можно выполнять где угодно, на самой минимальной среде
Vladimir
у тебя также будет удобный апи для проверки что все успешно
Aleksandr
Axm
шутки за 100 подвезли
Michael
video lessons java-java не так интересно
Vladimir
Michael просто хм, это правило хорошего тона что ты сделал go get, потом go test и оно просто протестировалось
Vladimir
а не потребовало от тебя поставить postgres, например
Vladimir
или не дай бог какую-нибудь экзотику
Vladimir
Поэтому стоит делить юнит тесты, которые должны тестировать функциональность отдельных элементов и мокать все
Vladimir
и интеграционные тесты, которые должны тестировать что это ваще можно выкатить в продакшн и не расфигачить все что вокруг
Vladimir
то есть что структура базы поменяется успешно, что какие-то тестовые данные нормально запишутся, что другие демона смогут с результатом работать и т.п.
Oleg
https://i.imgur.com/w54ATkB.png
engelbart
go-sqlmock не плох вроде
engelbart
но писанины жесть, я б хотел часть запросов уметь прпускать
engelbart
а часть хотел бы без последовательности иметь
Артур
ребята, можете обьяснить об этих строках: fmt.Printf("%T \n", routes) // []interface {} a := routes.([]interface{}) []interface разве можно приводить? почему оно работает?
Anonymous
Массив из элементов приводится к массиву из interface{}
Anonymous
%T печатает тип переменной
Артур
а срез из элементов interface{} я могу привести к массиву другого типа?
Артур
тем же методом без итерации?
Anonymous
a, ok := routes.([]String{}) По-моему полная запись такая, если ok то переменная приведена к другому типу
Anonymous
https://tour.golang.org/methods/15
Anonymous
можно в цикле перебрать срез интерфейсов и каждое конкретное значение привести к нужному типу
Артур
жаль, a, ok := routes.([]String{}) было бы классно
Pavel
Привет. Может кто-нибудь подскажет: как с помощью go воспроизвести аудио файл на windows? :)
Anonymous
Привет. Может кто-нибудь подскажет: как с помощью go воспроизвести аудио файл на windows? :)
вызвать команду открытия медиаплеера с параметром файлом?
Pavel
Хочу сделать, чтоб зачитывались голосом входящие сообщения. В итоге текст переводится в мр3. Вот дальше надо как-то их воспроизводить постоянно по мере поступления)
Anonymous
https://gist.github.com/isaiah/5699797
Pavel
вот я чет не найду либы нужной
Pavel
портаудио не заведется же на винде?
Igor
vlc player? Запускать из под консоли\батника\отдельным процессом с нужными аргументами
Igor
Вроде даже http api есть для управления плэером
Pavel
тогда надо будет просить всех его устанавливать
Viktor
Посмотри тут, может чего найдешь
Pavel
смотрел
Pavel
)) даже тот код что выше приводили компилил уже