
Vadiimmm:-)))
29.09.2017
08:35:59

Alexander
29.09.2017
08:36:05

Vadiimmm:-)))
29.09.2017
08:40:56
живой пример

Google

Димка
29.09.2017
08:41:45

Anatoly
29.09.2017
08:42:41
Тесты нужны 100%. Чтобы понтоваться уровнем coverage. ?
тесты нужны, чтобы какое-то время пребывать разработчику в комфорте, поскольку его изменения не сломали поведение ранее работающих участком кода. появление ошибки и ее исправление заканчивается добавлением нового теста. тесты по ошибкам - это регрессионные тесты.
странно обсуждать очевидное

Andrew
29.09.2017
08:43:45

Vadiimmm:-)))
29.09.2017
08:43:59
Тесты для кода нужны?
Да – 36
??????? 78%
Что это такое? – 7
? 15%
Нет – 3
? 7%
? 46 people voted so far.
пока никто не ответил - "нет", странно
я ожидал хотябы одного ответа "нет" ???

Anatoly
29.09.2017
08:44:40

Mush
29.09.2017
08:45:26

Anatoly
29.09.2017
08:46:17

Pawel
29.09.2017
08:48:05

Nick
29.09.2017
08:48:54
И эт страшно

Google

Vadiimmm:-)))
29.09.2017
08:49:14

Mush
29.09.2017
08:50:05

Pawel
29.09.2017
08:50:28

Vadiimmm:-)))
29.09.2017
08:50:35

Mush
29.09.2017
08:50:47
Чушь какая-то )

Alexander
29.09.2017
08:51:34

Mush
29.09.2017
08:51:38
Демон который периодически гребет данные из стороннего интерфейса попробуй в своё мировоззрение поместить

Vadiimmm:-)))
29.09.2017
08:51:59
Если при пинании компутера что-то отваливается, отпиливаем ногу фронтэнщику)))

Alexander
29.09.2017
08:52:43
а то конечно, все считают что они нужны. Я тоже. Но чтобы понтоваться тестами, они должны быть и функциональными, и и нтерграционными. А столько тестов я писать не собираюсь )

Mush
29.09.2017
08:53:40

Мерлин
29.09.2017
08:55:20
не пишут тесты
@
тратят недели на отладку принтами
@
после каждого изменения повторять заново
такое

Vadiimmm:-)))
29.09.2017
08:55:56
???

Alexander
29.09.2017
08:56:01
Скиньте кто нибудь mysql.cnf с какого нибудь боевого сервера, plz
о да, а кто пишет тесты, не дебажат, вахахахах )

Vadiimmm:-)))
29.09.2017
08:57:28
зачем дебажить, когда есть fmt.Println))))

Димка
29.09.2017
08:57:30
Дали приложение, исправить багу.
Нужно было в нескольких местах исправлять и добавить 1 канал. Тестов не было, исправлять отказался, поставил костыль, рядом комментарий.

Мерлин
29.09.2017
08:58:17

Pawel
29.09.2017
08:58:32

Vadiimmm:-)))
29.09.2017
08:59:18

Google

Pawel
29.09.2017
09:01:50

Vadiimmm:-)))
29.09.2017
09:02:13
не в обиду если че)
пятницо
все мои подколы без злого умысла

Andrey
29.09.2017
09:04:59
был проект, небыло тестов, все хорошо работало и все были довольны, проект рос, и в какой-то момент начал ломатся, разработчики вместо внедрения фич чинили баги, когда баги починили решили не внедрять новых фич, а покрыть хоть как-то проект тестами, первые тесты которые были, это просто функции которые запускали другие функции, не ожидая какого-то ответа (просто проверяли не вылетело ли все в панику) и даже такие тесты нашли кучу багов в проекте, хз зачем я это пишу :)
ну в общем какой-то мало-мальски большой проект написать без тестов просто не реально (возможно я и все мои коллеги просто туповаты, такой вариант тоже не стоит исключать)


in favor
29.09.2017
09:06:19
был проект, небыло тестов, все хорошо работало и все были довольны, проект рос, и в какой-то момент начал ломатся, разработчики вместо внедрения фич чинили баги, когда баги починили решили не внедрять новых фич, а покрыть хоть как-то проект тестами, первые тесты которые были, это просто функции которые запускали другие функции, не ожидая какого-то ответа (просто проверяли не вылетело ли все в панику) и даже такие тесты нашли кучу багов в проекте, хз зачем я это пишу :)
Жизненно, на самом деле

Димка
29.09.2017
09:08:40
Есть другая сторона медали. Мой коллега, каждой структуре пишет интерфейс. Каждое поле структуры приватное, и для неё написан геттер. И для каждого геттера написан юнит-тест. Хотя в большинстве они просто возвращают значение поля.

in favor
29.09.2017
09:09:26
Это странные тесты, на мой взгляд

Anatoly
29.09.2017
09:10:47
get/set отличный способ отлова несанкционированного изменения значения поля структуры.
при командной разработке иногда сокращает в разы время поиска проблемы, для одиночек неактуально

Димка
29.09.2017
09:12:11

Anatoly
29.09.2017
09:12:19
не знаю

Andrey
29.09.2017
09:12:48
в других языках гетеры и сетеры часто используются, и в той-же идеи генерируются автоматически
странно что для го такого нету

Vadiimmm:-)))
29.09.2017
09:13:13
был проект, небыло тестов, все хорошо работало и все были довольны, проект рос, и в какой-то момент начал ломатся, разработчики вместо внедрения фич чинили баги, когда баги починили решили не внедрять новых фич, а покрыть хоть как-то проект тестами, первые тесты которые были, это просто функции которые запускали другие функции, не ожидая какого-то ответа (просто проверяли не вылетело ли все в панику) и даже такие тесты нашли кучу багов в проекте, хз зачем я это пишу :)
Жизненно, На больших проектах остуствие/присутсвие тестов очень резко сказывается на дальнейщих фичах, когда проект рабочий и приносит деньги

Michael
29.09.2017
09:14:16
протестил кнопку нет - работает

Vadiimmm:-)))
29.09.2017
09:14:40

Pawel
29.09.2017
09:18:04

Google

Vadiimmm:-)))
29.09.2017
09:18:05
Помню на таком проекте запилил фичу, запустил тесты, 2 теста не прошли
Смотрю, блин да они вообще не связанны с моей фичией, ну никак, почему ломаются. Начал смотреть в код, бац очень очень косвенно зависиость была таки. Без тестов я бы думал что все ок, и только на бою когда бы стали отваливаться клиенты, только тогда бы узнал что-то то не так, по логам, звонкам в тех поддержку, это же ппц

Pawel
29.09.2017
09:22:28
я - крайне редко. у меня ни когда не было 100% покрытия и я к этому не стремился.

Maxim
29.09.2017
09:23:38
Не понимаю пока с интерфейсами
Могу ли я не вывести, а получить отсюда Id??? Как это сделать?
func(c *routing.Context) error {
fmt.Printf("%+v\n", c.Get(apis.User).Id)
c.Write(c.Get(apis.User))
return nil
}
//&{Id:1}
В контекст записал, вывести могу, значит доступ к свойствам для дальнейшей работы с ними тоже должен иметь. Верно ведь?

Pawel
29.09.2017
09:25:10

Maxim
29.09.2017
09:27:38
@ruzzke_mir Я имею структуру
type User struct {
Id int `json:"id" db:"id"`
}
func (u *User) GetId() int {
return u.Id
}
Как передать сюда мой параметр Id из контекста, что выше?

Pawel
29.09.2017
09:29:41

Mikhail
29.09.2017
09:31:16
Привет!
Никто не юзает эту либу для тестов веб- и неочень- сервисов?
https://github.com/stretchr/testify
Нравится как выглядит, читаемо, кмк.

Vadiimmm:-)))
29.09.2017
09:31:33

Maxim
29.09.2017
09:32:02
@ruzzke_mir что-нибудь вроде
user := new models.User{"Id": c.Get(apis.User).Id}
Но это не работает

Pawel
29.09.2017
09:34:51

Michael
29.09.2017
09:34:58
вместо new может амперсанд &

Maxim
29.09.2017
09:35:07
Я извиняюсь за свои вопросы, но прошу помочь решить этот вопрос
@ruzzke_mir В контексте у меня находится данные пользователя, которого я получил по токену из db
"Аутентифицировал" так сказать. Однако чтоб дальше получить какие-то объекты этого пользователя мне нужен хотя бы его id. А это уже находится в контексте, потоу что в процессе аутентификации я поместил пользователя в пустой интерфейс Identify
token := parseBearerAuth(c.Request.Header.Get("Authorization"))
identity, e := fn(c, token)
if e == nil {
c.Set(User, identity)
return nil
}
здесь в identify я передаю models.User, который получил по токену из бд. Как мне теперь получить его из контекста?

Pawel
29.09.2017
09:42:03
естественно это очень схематичный ответ

Google

Maxim
29.09.2017
09:43:25
вот кстати мой routing.Contect
func (c *Context) Get(name string) interface{} {
return c.data[name]
}
// Set stores the named data item in the context so that it can be retrieved later.
func (c *Context) Set(name string, value interface{}) {
if c.data == nil {
c.data = make(map[string]interface{})
}
c.data[name] = value
}

Nikolay
29.09.2017
09:47:29
Что-то как-то сложно
лучше: user := c.Get(apis.User).(models.User)

Maxim
29.09.2017
09:47:57
@nuqzz не катит

Nikolay
29.09.2017
09:48:29
и вообще злобный микс из литерала и new

Maxim
29.09.2017
09:51:36
@nuqzz
level=error msg="interface conversion: interface {} is *models.User, not models.User"

Pawel
29.09.2017
09:51:45

Nikolay
29.09.2017
09:53:13
очевидно, что даже gotour не был пройден на эту тему)

Maxim
29.09.2017
09:56:27
@nuqzz дружище, спасибо большое!!! наконец-то получил данные из контекста.
Пошел дальше изучать go на примере создания микросервиса

Michael
29.09.2017
10:15:05
го тур не читай - микро сервисы клепай)

Maxim
29.09.2017
10:15:42
???
тогда все будет точно по феншую)))

Pawel
29.09.2017
11:14:48
господа, кто нибудь gopherjs использует? я уже тут как-то спрашивал. не ужели по нулям?

Valentin
29.09.2017
11:19:08
вчера на митапе про него вещали

Anatoly
29.09.2017
11:19:22

Valentin
29.09.2017
11:19:31
Общий вывод- все работает, но писать фронт на нем это изврат