Lee
Рекомендую просто писать тесты :)
Я не особо понимаю что должно быть в тесте. Я разрабатываю приложуху и мануально тестирую: подкидываю значение, дамплю логи, фиксаю.
Alex
Запускаешь из него тесты пакета, после чего он прям в редакторе все подсвечивает
у меня ничего не подсвечивает может какое-то расширение нужно для этого?
Lee
Рекомендую просто писать тесты :)
Мне бы просто увидеть парочку тестов
Anonymous
Мне бы просто увидеть парочку тестов
Гугол забанил роскомнадзор? ))
Lee
Гугол забанил роскомнадзор? ))
Наоборот, ты хотел сказать?)
Lee
Скиньте свои проджекты с тестами на гитхабе, хоть гляну
Anonymous
Скиньте свои проджекты с тестами на гитхабе, хоть гляну
Эээ, что сразу по больному месту то бить! 😂
Anonymous
Скиньте свои проджекты с тестами на гитхабе, хоть гляну
Мой быдлокод быдлотеста: https://github.com/nxshock/colorcrop/blob/master/colorcrop_test.go
Lee
Смелость — черта храбрых, или как там говорят.
Alex
прикольно
Anatoly
Парни, пишу программу которая работает с minio. Написал юниттест который вообще к минио не относится, запускаю готест, а он мне пишет что не может подключиться к минио на 9000 порту. Конечно не может - минио у меня сейчас не запущен, но почему он вообще хочет к ней подключиться во время запусков юниттестов?
🄽🄸🄺🄸🅃🄰
Кто может привести простой пример функции для ассерта интерфейса к конкретному типу ? Так можно делать? Передать интерфей по ссылке, и строку название типа, чтобы в функции сделать ассерт и присвоить этот точный тип переданному интерфейсу?
🄽🄸🄺🄸🅃🄰
func assertType(someInterface *ElementsInterface, exactTypeName string){ exType := elementsInterface switch visualisationType { case "type1": case "type2": someInterface = (*ExType).(ExactFirstType) break case "type3": someInterface = (*ExType).(ExactThirdType) } }
🄽🄸🄺🄸🅃🄰
чтот такое ваяю
Илья
зачем?
🄽🄸🄺🄸🅃🄰
что значит "передать интерфейс по ссылке"?
я не знаю как это корректно сделать.
ainu
В visual studio code можно сделать две вещи
Maxim
я не знаю как это корректно сделать.
можно как-то взять ссылку на интерфейс?
ainu
1. Прогон тестов при сохранении файла
Илья
зачем нужна ссылка на интерфейс, если интерфейс - это уже ссылка?
ainu
2. Генерацию теста из ide контекстным меню. (Второе не для всех кейсов норм вроде внешних взаимодействий с файлами но функции тестить самое то)
🄽🄸🄺🄸🅃🄰
есть data , newData , в них обоих приходит один и тот же интерфейс. Их надо сливать через append. Нужно сделать Assert к точному типу. Типы хранятся в отдельном пакете. Хочу в пакет положить метод, который буду вызывать с этими переменными, чтобы их приводить к типу по имени
ainu
можно как-то взять ссылку на интерфейс?
Ненене у интерфейса нет и не может быть ссылки же
ainu
Я правильно понимаю - есть некие данные которые приходят в нечто interface{} и надо в зависимости от типа в разные места юзать?
Andrei 🦉
но рефлексия медленная и чревата паниками в бою
🄽🄸🄺🄸🅃🄰
Я правильно понимаю - есть некие данные которые приходят в нечто interface{} и надо в зависимости от типа в разные места юзать?
кажется наоборот. Да данные приходят в переменные инерфейса. Но надо юзать именно в одном месте, но ассерт нужен по входящей строке, где указано имя типа
🄽🄸🄺🄸🅃🄰
тобишь имени делать
🄽🄸🄺🄸🅃🄰
строковому
🄽🄸🄺🄸🅃🄰
там нет типов, которые надо выбирать, их надо присваивать
Andrei 🦉
кинь пример кода
ainu
Например можно передавать два куска данных
ainu
То есть делаем структуру данные, тип
ainu
И передаём и данные и тип
ainu
Тип это строка или константа
ainu
В зависимости от типа делаем разные вещи
ainu
Динамическая типизация для бедных
Anonymous
Hint - свою мысль можно написать в одном сообщении. Это проще, чем кажется ;)
🄽🄸🄺🄸🅃🄰
кинь пример кода
func assertType(elementsInterface models.ElementsInterface, visualisationType string){ ExType := elementsInterface switch visualisationType { case "area": case "column": elements := ExType.(models.ChartElements) elementsInterface = &elements break case "pie": elements := ExType.(models.PieElements) elementsInterface = &elements } }
Andrei 🦉
@Altenrion вопрос - у тебя все возможные типы определены и известны заранее? и прилетевшая структура точно является экземпляров одного из этих типов?
Andrei 🦉
тогда делай через elements, ok := ExType.(models.ChartElements)
Andrei 🦉
на первом положительном ок - останавливаешь
🄽🄸🄺🄸🅃🄰
на первом положительном ок - останавливаешь
не оччень понял как на первом или не первом?
Andrei 🦉
когда ты приводишь интерфейс к типу, то вторым параметром в ответе тебе прилетает была ли конвертация успешна
Andrei 🦉
просто делаешь перебор до первого совпадения
🄽🄸🄺🄸🅃🄰
Пример применения того что пишу workEntity := element.(Work) data := countedData[workEntity.Name] assertType(data, visualisationType) assertType(workEntity.Data, visualisationType) data = append(data, workEntity.Data...) countedData[workEntity.Name] = data
🄽🄸🄺🄸🅃🄰
просто делаешь перебор до первого совпадения
зачм перебор когда мне нужен точный тип и я знаю его строковое имя. Ну то есть я сам передаю параметр, по которому точно знаю какой тип структуры нужен
Илья
Похоже на дже*****
🄽🄸🄺🄸🅃🄰
Моя идея в принципе адекваатна ?
Andrei 🦉
а, ок, я неправильно понял вопрос короче го так не умеет
Andrei 🦉
ты можешь либо делать так, как в твоем примере
Andrei 🦉
либо через рефлексию
Andrei 🦉
и то и то чревато паниками, но это go way
🄽🄸🄺🄸🅃🄰
ой вариант он не гошный точно(
🄽🄸🄺🄸🅃🄰
всеравно интерфейсы не убираю...
🄽🄸🄺🄸🅃🄰
нужен точный ассерт
🄽🄸🄺🄸🅃🄰
чтобы сделать структуру для append
🄽🄸🄺🄸🅃🄰
[]Type
Andrei 🦉
в смысле точный ассерт? lements := ExType.(models.PieElements) ты и так его делаешь таким образом, только ошибку не обрабатываешь
Andrei 🦉
го тебе точно скажет объект этого ли типа прячется за интерфейсом или нет
Andrei 🦉
после чего можешь соорудить из таких элементов массив []models.PieElements
🄽🄸🄺🄸🅃🄰
мне нужен метод
🄽🄸🄺🄸🅃🄰
точнее функция, которую я уберу в пакет к этим структурам
🄽🄸🄺🄸🅃🄰
поэтому я не делаю switch прям в месте где нужны эти структуры а колдую именно функцию