
Sergey
13.04.2017
07:54:05

Andrey
13.04.2017
07:55:24
курят в курилке, обсуждают башара асада

Sergey
13.04.2017
07:55:56
т.е у вас только юнит тесты и полная изоляция?

Andrey
13.04.2017
07:56:25
есть чек контрактов, но он встроен в механизм взаимодействия

Google

Andrey
13.04.2017
07:57:07
Сергей, вы почитайте за разницу между юнит, акцептанс и интеграцией

Sergey
13.04.2017
07:58:51

Andrey
13.04.2017
07:59:07
накурено здесь, проветрите

Sergey
13.04.2017
07:59:24
а если внешнего мира много, т.е в проекте преобладает инфраструктура вместо бизнес логики?
то проект тестировать не нужно?

Andrey
13.04.2017
08:00:12
себя пожалей, ты читаешь и не понимаешь

Sergey
13.04.2017
08:00:31
ты мне хоть на один вопрос ответь, понимающий человек
пиздаболить особо ума не нужно

Andrey
13.04.2017
08:01:21
следующий

Roman
13.04.2017
08:02:05
ну там хорошие вопросы были подняты, на самом деле
я давно о них задумывался но идеального решения не нашел
ну а в тесте репоза делать флаш в базу а потом проверять записалось ли это конечно дичь, в идеальной системе такого быть не должно. но многие делают (я тоже иногда)

Google

Sergey
13.04.2017
08:10:12
проблема не в записи в базу. скажем если тебе нужно проверить модуль, в котором используется несколько баз данных, больше сотни различных выборок, то если делать моки по каждому интерфейсу поддержка такого решения будет очень сложной при этом тесты будут хрупкие, что на любую смену запросов у тебя тесты упадут
в таком случае базы которые readonly проще один раз поднять и держать их актуальными вне тестов, внешние апи которые нельзя дергать без последствий заменяются стабами. а вот данные, которые записываются тут хз, можно транзакциями, можно в teardown чистить, а можно забить и поднимать базу из дампа

Dinar
13.04.2017
08:13:16
Или из фикстур

Roman
13.04.2017
08:13:22
мы не чистим, а засираем тестовую базу да и все
да, я проблему общую понимаю.

Sergey
13.04.2017
08:13:43

Dinar
13.04.2017
08:14:17
Много связей или много данных?

Sergey
13.04.2017
08:18:46
и того и другого. допустим есть некий маркетплейс, тебе нужно проверить модуль поиска на нем. ты фикстурками можешь закинуть все продукты, но к этим продуктам еще нужны категории, теги, атрибуты, производители, ритейлеры, магазины ритейлеров и все в таком духе. плюс твой поиск идет через эластик и тебе нужно еще в индекс запихнуть данные, чтобы поиск работал

Andrey
13.04.2017
08:19:11
если у тебя много бд, это немного другая опера, называется так себе архитектура
в идеале у сервиса должна быть одна причина изменить данные
если сервис дергает несколько бд в сценарии - это god like architecture

Sergey
13.04.2017
08:20:02

Andrey
13.04.2017
08:20:15
Сережа, иди у мамки своей спроси

Dinar
13.04.2017
08:20:17

Sergey
13.04.2017
08:20:35

Andrey
13.04.2017
08:20:54

Sergey
13.04.2017
08:20:57

Dinar
13.04.2017
08:21:17
Что за агрессив. Будьте культурны. Вы же девелоперы а не Птушники.
Надо будет писать скрипт его уменьшающий и один фиг поддерживать же.

Sergey
13.04.2017
08:22:19
дамп можно снимать с продакшен базы, по нужным таблицам. 0 затрат в поддержке

Dinar
13.04.2017
08:22:21
Для тестов 15 минут грузить только дамп - это оверкилл же.

Google

Sergey
13.04.2017
08:22:36
для интеграционных и выше это ок в принципе

Dinar
13.04.2017
08:22:41
Как уж 0? Е ли он снимает что-то?
И таблицы могут меняться, дополняться. Связи надо сохранять.

Sergey
13.04.2017
08:25:32
надо попробовать оба варианта, пока еще прикидываю как это будет проще держать

Dmitry
13.04.2017
08:28:24
А какие могут быть проблемы в поддержке фикстур? А дамп с продакшен базы у меня, например, 6 гигов, несколько часов разворачивается.

Sergey
13.04.2017
08:29:20
с одной стороны у нас с прода синхронизируются всегда некоторые данные по всем окружениям(стейджинг, тесты, локалки девов) и использовать их же в тестах было б ближе к реалиям
с другой стороны, фикстур можно развернуть горстку и с ними работать. но это будет чуть лучше чем замокать базу

Aleh
13.04.2017
08:30:16

Sergey
13.04.2017
08:30:54

Aleh
13.04.2017
08:31:21

?
13.04.2017
08:34:02
долго вы его терпели О.о

Sergey
13.04.2017
08:34:21
я его еще не банил)

Andrey
13.04.2017
08:34:49
что может быть лучше)

Sergey
13.04.2017
08:34:49
обоснуй)

?
13.04.2017
08:35:07
а, он живой ещё

Andrey
13.04.2017
08:35:11
тебе разжевали немалый объем опыта выше
годика два работы с системой, которая имеет очень много интеграций с внешними апи

Sergey
13.04.2017
08:35:55
я не увидел там конкретики от тебя. тебе @mkusher задавал четкие вопросы, от которых ты уходил

Andrey
13.04.2017
08:36:03
ты чет там увидел про изоляцию, и давай тупо не по теме че-то пушить
да мне надоело просто, у него все должно быть с базой
тестируешь базу - тестируй

Google

Aleh
13.04.2017
08:36:33
Лол

Andrey
13.04.2017
08:36:43
просто вместе с базой приходит еще один гемор с ее поддержкой
нужно иметь конфиг стенда

Aleh
13.04.2017
08:37:02
Где я писал, что все должно быть с базой?)))

Andrey
13.04.2017
08:37:19
у тебя где-то на границе там какие-то коннекты в бд
которые не покрыты тестами

?
13.04.2017
08:37:31
про базу ты начал

Andrey
13.04.2017
08:37:46
наверное потому что тупые и не поняли, что надо же это потестить, чо оно

Admin
ERROR: S client not available

Andrey
13.04.2017
08:37:53
тестировать провод на то, что он провод

Sergey
13.04.2017
08:38:06
лихо ты с базы на провод прыгаешь

Andrey
13.04.2017
08:38:26
бд выполняет две функции выдавать сохраненное и сохранять
если ты используешь симфони ты бд не видишь, для тебя есть абстракция

Sergey
13.04.2017
08:38:51
и да, провода тоже разные бывают

Andrey
13.04.2017
08:39:01
у которой можно проверить вызов определенных функций обозначающих сохранение

Sergey
13.04.2017
08:39:12
если так рассуждать, то тебе не нужно ни лампу, ни розетку, ни провод тестировать. потому что они все идут по гостам

Andrey
13.04.2017
08:39:16
дбал или орм или все вместе
да вообще ничего не тестируй
зачем
код без тестов хорошо живет

Google

Andrey
13.04.2017
08:40:24
только недолго

Sergey
13.04.2017
08:40:26
ну это я по твоему опыту уже понял

Aleksey [R10]
13.04.2017
08:40:31
Ребят у меня вопрос. Как сделать блок из 2х радиокнопок
ChoiceType же
в параметрах
'choices' => [
1 => 1,
2 => 2,
],
и основной вопрос как задать ему шаблон для рендера свой

Andrey
13.04.2017
08:41:06
Сережа, ты такой молодец у мамы, анализируешь опыт

Sergey
13.04.2017
08:41:17
ты в каком классе?

Andrey
13.04.2017
08:41:19
вместо того, чтобы включить голову и понять, о чем вообще речь

?
13.04.2017
08:41:32
чё как хуйло то быть

Andrey
13.04.2017
08:41:46
ежик, так он за опыт начал)

Aleksey [R10]
13.04.2017
08:42:29
кажется в середину холиварчика неудасно попал )

Sergey
13.04.2017
08:43:54

Andrey
13.04.2017
08:44:15
есть такая методология позволяющая упрощать дизайн
называется TDD, если мокаешь слишком много, это означает лишь одно - неверно разделена ответственность в модулях
после пяти-семи лет практики приходит чувство правильного, когда ты пишешь сразу тестируемый код с разделением зон ответственности
для каждой внешней апишки у нас адаптер, который предоставляет разделяемый интерфейс
получить данные, отдать данные

Sergey
13.04.2017
08:47:25
вот мы берем конкретно модуль поиска, который ничего не делает кроме как занимается поиском продуктов по каким-то критериям и выдает для них фильтры. лишнего в нем ничего нет. как проверить его работоспособность?

Andrey
13.04.2017
08:47:40
консультации за деньги)

Sergey
13.04.2017
08:49:11
есть такая методология позволяющая упрощать дизайн
при чем тут тдд к кейсу что я описал? мы для примера можем взять идеальный модуль, который писан по канонам тдд, с полным покрытием и отличным дизайном. но вот мы проверяем только юниты, а нам нужно проверить весь модуль вместе, т.е провести интеграционное тестирование

Andrey
13.04.2017
08:52:12
код написан по канонам тдд?
эт как