@gogolang

Страница 1462 из 1630
Александр
26.09.2018
15:56:02
а хедлеры в тестах значит работают без DI и кормяться вручную

Roman
26.09.2018
15:56:45
уже есть какие-нибудь фреймворки кодогенераторы декларативных API тестов?

Александр
26.09.2018
15:59:00
ну я просто знаю как в PHP сделан DI, все классы которым требуются зависимости дергаются через оберточку аля DI("/namespace/className") дальше уже движок разбирает что там в конструкторе за зависимости и пытается их накормить (если есть)

Google
Roman
26.09.2018
15:59:03
есть идея как реализовать декларативные тесты GraphQL апишек, определяешь: 1. query 2. ожидаемый JSON 3. conditions (макро-функции, реализуются в Go коде)

Dmitry
26.09.2018
15:59:10
Коллеги, панику из горутины никак не отловить?

Александр
26.09.2018
15:59:32
Dmitry
26.09.2018
15:59:34
https://play.golang.org/p/N6NGMFH86g2

Александр
26.09.2018
16:00:16
https://play.golang.org/p/N6NGMFH86g2
не выйдет, вы стартуете новый поток

в нем и отлавливайте

Dmitry
26.09.2018
16:00:40
Т е автоматически никак.

Александр
26.09.2018
16:01:08
Т е автоматически никак.
https://play.golang.org/p/07uP2U2Z1Kd

Aleksandr
26.09.2018
16:01:32
ну я просто знаю как в PHP сделан DI, все классы которым требуются зависимости дергаются через оберточку аля DI("/namespace/className") дальше уже движок разбирает что там в конструкторе за зависимости и пытается их накормить (если есть)
ты наверное забыл, но мы с этого разговора начали, когда ты появился в гошном чате. Нет, в пхп не так сделано. Ты рассказываешь какую-то определенную реализация ресолва зависимостей внутри контейнера. Конечно же не все контейнеры работают не рефлекте.

Александр
26.09.2018
16:01:56
ну окей

в гоу то как принято с DI?

Aleksandr
26.09.2018
16:02:20
в го не принято di, сам знаешь

Dmitry
26.09.2018
16:02:57
https://play.golang.org/p/07uP2U2Z1Kd
Это означает что в контексте горутины нужно отлавливать и по другому никак?

Google
Dmitry
26.09.2018
16:03:14
Ок, спасибо

Александр
26.09.2018
16:05:29
в го не принято di, сам знаешь
когда я описывал свою с вашего позволения "архитектуру" никто даже не пикнул ?

наоборот все говорили "ну зависимости надо статически отдавать и ок"

в смысле методов наделать аля GetDB()

Александр
26.09.2018
16:07:31
и где его простите применять?

если я не могу контейнер с ним скоримть в хедлер

Aleksandr
26.09.2018
16:07:49
и где его простите применять?
если это метод контейнера

Александр
26.09.2018
16:08:32
в данном случаи этот контейнер в структуре MyApplication

Aleksandr
26.09.2018
16:08:42
postStore := NewPostStore(container.GetDb()) userStore := NewUserStore(container.GetDb())

Александр
26.09.2018
16:08:56
и зачем это?

я с такми же успехом могу написать

Aleksandr
26.09.2018
16:09:06
а не postStore := NewPostStore(container) userStore := NewUserStore(container)

Александр
26.09.2018
16:09:30
db := db.NewConnect() ostStore := NewPostStore(db) userStore := NewUserStore(db)

почему тогда сразу не так?

только сущность наплодили "лишную"

Aleksandr
26.09.2018
16:10:03
и зачем это?
чтобы тестировать зависимости, а не зависимости зависимостей. Зачем твой компонент будет зависеть от чужих зависимостей, если должен зависеть от своих?

db := db.NewConnect() ostStore := NewPostStore(db) userStore := NewUserStore(db)
можно так. ты же просто переименовал метод

Google
Александр
26.09.2018
16:10:29
нихрена

Aleksandr
26.09.2018
16:10:33
если он не создает новый коннект кажддый раз, то это норм

Александр
26.09.2018
16:10:43
создает

Aleksandr
26.09.2018
16:10:49
ну а зачем?

Александр
26.09.2018
16:10:56
мы же в main и это уже вызов идет бд непосрдественно

Aleksandr
26.09.2018
16:11:44
так что сказать то хочешь?

Александр
26.09.2018
16:11:44
я просто не вижу смысла тогда от "контейнера"

в твоей реализации

если мы из него дергаем обьект и передаем

какой смысл в контейнере?

сразу создаем на месте обьект и передаем уже

ну только инициализацию если спрятатать

Aleksandr
26.09.2018
16:13:31
погоди, если ты хочешь прямо в main все создать - создавай

Александр
26.09.2018
16:13:43
блин я просто упроситил модель

конечно же нет

Aleksandr
26.09.2018
16:13:45
я тебе не контейнер показываю, а какие зависимости передавать

Александр
26.09.2018
16:14:40
еще раз, если мы берем коннект бд из контейнера и передаем, зачем нам контейнер? Кроме помощи в инициализации бд

он откинулся до того как мы зашли в функцию

Roman
26.09.2018
16:15:06
https://github.com/jaypipes/ghw

FYI

Google
Admin
ERROR: S client not available

Aleksandr
26.09.2018
16:17:46
еще раз, если мы берем коннект бд из контейнера и передаем, зачем нам контейнер? Кроме помощи в инициализации бд
незачем. но можно контейнер в фабрику передавать. и в фабрике уже вытаскивать зависимости. Плюс в контейнере можно спрятать всю инициализацию. В общем конntйнер - это единый ресолвер зависимостей.

Aleksandr
26.09.2018
16:20:05
ключевое слово - ресолвер.

Александр
26.09.2018
16:21:39
что есть "резолвер"?

type MyApplication struct { db *db.Database } func (app *MyApplication) GetDB() *db.Database { return app.db }

резолвер?

Aleksandr
26.09.2018
16:23:19
нет, просто контейнер

ты ушел от первоначальной проблемы

инъекция контейнера vs инъекция зависимостей

Александр
26.09.2018
16:25:53
ну мы определили что я сделал не правильно

передал контейнер в хедлер

Денис
26.09.2018
16:27:30
Всем привет. А подскажите - в defer функции параметры расчитываются в момент появления defer в коде (а не в момент завершения функции). С коллером будет также? Пример: func (o *obj) foo() { defer o.newTimer().stop() //other_code } newTimer() - вызовется в самом начале функции, а stop() будет вызван в конце?

Илья
26.09.2018
16:29:44
да

Денис
26.09.2018
16:31:02
Спасибо

Александр
26.09.2018
16:31:50
ээм

а это к чему?

Aleksandr
26.09.2018
17:09:20
Александр
26.09.2018
17:10:15
к GraphQL
у меня тут еще дополнительный вопрос, а как насчет каскадных зависимостей? Когда приложение кормиться в вебсервер, а вебсервер передает дальше в хедлеры (и оборачивает их)

Google
Александр
26.09.2018
17:10:23
или же надо делать "все на 1 уровне"

теоретически я мог бы хедлеры просто иницилизировать на уровне вебсервера и просто ему их скормить

Aleksandr
26.09.2018
17:11:56
не совсем понял

Александр
26.09.2018
17:13:08
Вариант 1: serv := http.NewWebServer(app) serv.Lisner() // Внутри вызывается route который вызывает handlers Вариант 2: routes := handlers.NewRouters(app) serv := http.NewWebServer(app) serv.Lisner(routes)

стоит ли там "оборачивать"

или зависимости должны иди прозрачно без каскадов

Aleksandr
26.09.2018
17:14:16
ну ты главное компонент к контейнеру не привязывай, а так делай как хочешь

Александр
26.09.2018
17:14:31
в ООП это как бы норм, глубина бывает по 7 элементов

Aleksandr
26.09.2018
17:14:35
я вижу что ты в фабрику контейнер прокидываешь. это не про зависимости

Страница 1462 из 1630