Black
Me*
suvorov
Эх.
suvorov
Доброе утро.
Mega
I use gorm, now, How do I return an array from SQL query
select username from users
I only get the first username
V
JohnBrand
можно
/slvscm
V
Maks
А теперь покрой тестами
Ну так там же не так сложно это сделать. Хотя прежде всего нужно учесть, что никто не делает на бэке задачи с принтом)))))))) Эта задача она чисто на логику и с реальными задачами общего ничего не имеет от слова совсем)
V
Maks
Они на логику но не на принт
Maks
В этой задаче просто делаешь возвращение строки и тестируешь этот метод
V
Строки ли возвращение?
Maks
Если ты хочешь проверить именно принт целиком, то да. Но можно и по другому в целом, но немного заморочнее
Maks
придется брать os.stdout получать оттуда результат и сравнивать его с експектед
V
Как ты собираешься тестировать строку?
V
И какова эффекттвность такого тестирования?
Тестовые данные наглядны? Легко изменяемы?
антон
какая задача такие и данные
антон
сырая строчка достаточно наглядная
Maks
Ты сравниваешь 2 строки, ожидаемую и ту что вернет метод
Maks
В чем там сложность
Maks
Это же обычный юнит тест
V
ну или покажи пример ассерта
Maks
Мне лень за комп садиться. У тебя есть метод он возвращает строку. Ты сравниваешь строку которую вернул метод и строку которую ты ожидаешь.
Maks
Если метод изменится и будет сделан не верно то у тебя соответственно тест упадет
Maks
Я не понимаю в чем ты проблему увидел
Maks
И почему ты написал типо :сделай это на го, а теперь напиши тест. Чем это будет от того же питона отличаться?
V
Проблема - в херовом проектировании апи. Я хочу видеть промежуточный метод, складывающий числа в [n][n]int
антон
как это поможет тестам?
V
Потому что из массива [n][n]int можно слепить много чего, а из строки - ничего
V
как это поможет тестам?
Тестам не нужно помогать, тесты должны помогать. Промежуточная структура данных помогает разработке. Не конкретной мини-задаче, а в реальных проектах.
антон
как будет выглядеть наглядный тест для такого массива?
Maks
Так при чем тут проектирование и остальное))
Maks
При чем тут язык го
Maks
Вообще не понимаю
Maks
Что ты хочешь донести?
V
При том что если ты умеешь проектировать - ты проектируешь всегда и везде. Если ты не умеешь - выдаёшь фразы типа "по условиям задачи нужно напечатать строку, чё ты привязался"
Maks
Щас парни разберемся, главное правильно задать вопросы
V
Maks
Зачем ты челу на мем написал напиши это на го?
Это задача из разряда олимпиадных
антон
это называется преждевременная генерализация
Maks
Там важен еще и размер кода
Maks
И потребляемая память
Maks
И скорость исполнения
Maks
Важна так же скорость с которой ты решаешь задачу
Maks
Зачем мне проектировать что то для этой задачи? Зачем тратить деньги на то, о чем бизнес не просил?
Maks
Так а если у тебя другие значения не верные?
Maks
Или ты будешь весь массив проверять?
V
Или ты будешь весь массив проверять?
Весь - это сколько? 1000х1000?
Если массив маленький - его можно конвертнуть в строку, например так
if
`21 22 23 24 25
20 7 8 9 10
19 6 1 2 11
18 5 4 3 12
17 16 15 14 13` != to_string(spiral(25)) {
log.Fatal("Wrong spiral")
}
но это должен быть дополнительный тест, потому что нужна промежуточная структура данных
Maks
Maks
Суть не в этом. Суть в том что тебе в тесте придется проверить каждое значение
Maks
Абсолютно
Maks
Что бы доказать что программа работает верно
антон
Maks
И что если у тебя по спирали, но ты не знаешь первое значение и шаг?
Maks
И чем же это лучше чем проверять строку
Maks
Строка гораздо нагляднее будет))))) там сразу видно глазу что числа идут по спирали, что они верный порядок имеют, что они правильно закручены
Maks
Твой метод ничем не лучше и не является итоговым трестирующим требуемый функционал
Maks
Требуемый функционал - вывод текста. По этому и проверять нужно вывод текста
Maks
А внутренние методы скрываешь
Maks
А там уже хочешь массив верни в промежутке где то, хочешь еще что то
V
V
Для большинства программ это в принципе недоказуемо
V
У тестов нет задачи формально верифицировать программу
Maks
Задача юнит теста показать что метод работает правильно при граничных, не верных и верных значениях
V
Задача тестов - помощь в итеративной разработке и регрессионный контроль
Maks
Если диапазон тестируемых данных плохой это проблема тз или тестировщика же
V
Ты и a + b тестами никак на корректность не проверишь
Maks
Можно написать сначала тесты а потом код, и ты будешь знать что на большинство учтенных значений работает все ок
антон
или не понадобится никогда
антон
вместо решения задачи напишите фреймворк
V
Прежде чем учиться не программировать лишнего сперва нужно научиться программировать. Тогда ты сможешь на лету и адекватно решать что нужно делать, а что нет.
антон
если это тестовая задача, очевидно, что улучшать её не потребуется