Alexey Mishurovskiy
это кстати не помогает
Alexey Mishurovskiy
помогает только явно объявить сервис с зависимостями
dima
помогает только явно объявить сервис с зависимостями
может у тебя дальше по коду в ямле где-то игнорируются директории какие-то
Nikolay
помогает только явно объявить сервис с зависимостями
так и надо делать, добавлять сервис в services_test.yml
Alexey Mishurovskiy
ну только так и работает
Nikolay
https://stackoverflow.com/questions/68865038/how-to-access-a-private-service-in-symfony-5-3-phpunit-tests
Konstantin
мошт компайлер-пасс/экстеншн написать?
Konstantin
говнорешение, но точно сработает
Nikolay
мошт компайлер-пасс/экстеншн написать?
Сейчас нормальное решение остается только через test.yml переопределять?
Konstantin
нормальное - понять как правильно конфигурить контейнер для тестов
Konstantin
не может быть, что в симфони никто этого не сделал
Konstantin
но как быстрое решение - быстро написать мелкий компайлер-пасс
dima
dima
вроде на сайте симфони все описано))
dima
А по другому как
а в чем проблема в тестовом окружении делать все сервисы публичными?
Nikolay
а в чем проблема в тестовом окружении делать все сервисы публичными?
В случае выше неохота добавлять все это в services_test.yml
Konstantin
а в чем проблема в тестовом окружении делать все сервисы публичными?
это, судя по инфе выше, нельзя сделать глобально. надо явно руками указать каждый fqdn каждого сервиса и ему явно сказать что он публичен
Konstantin
надо понять как получить незапечатанный контейнер
dima
это, судя по инфе выше, нельзя сделать глобально. надо явно руками указать каждый fqdn каждого сервиса и ему явно сказать что он публичен
хм, я не пробовал, но получается, если тестовый конфиг переопределяет базовый, то все равно там в дефолт части нельзя сделать все паблик?
Konstantin
то что в компайлер-пассах ContainerBuilder. я когда-то раньше такое делал, но щас под рукой кода нет - я в машине в горы еду :)
Сергей
У нас так, все вроде работает без прописывания сервисов вручную
dima
я тоже не пробовал, но человек выше явно пишет что не удалось
ну может у него конфиг там как-то еще переопределяет что-то
Nikolay
services: _defaults: public: true Можно вот так сделать, но сервисы все равно объявлять придется
Ivan
Сталкивался недавно. Отдельно нужно прописывать сервис, если он нигде более не вызывается. Если в рабочем коде идёт работа с ним, то он и так будет доступен.
dima
тут вроде как исключена папка тест из билдинга сервисов, это дефолтный конфиг приложения, может в тестовом так же
Ivan
Ну если он у тебя в DI при инициализации сервиса или контроллера засвечен, значит используется.
Konstantin
non-removed, если иначе
Ivan
Иначе будет выкинут в процессе компиляции
Konstantin
там есть стадия оптимизации контейнера, когда из него выкидываются сервисы, на которые "нет ссылок"
Konstantin
но, ещё раз, я бы написал компайлер-пасс
Konstantin
foreach ($container->getDefinitions() as $definition) { $definition->setPublic(true); } foreach ($container->getAliases() as $definition) { $definition->setPublic(true); }
dima
Ну если он у тебя в DI при инициализации сервиса или контроллера засвечен, значит используется.
ну если человек его хочет протестировать, то наверно засвечен) но тут проблема с прямым вызовом
Ivan
Не факт. Может вначале тесты пишет к нему, а потом уже использовать будет.
Konstantin
сегодня использует, завтра - убрал временно зависимость от этого сервиса. а у тебя тесты взорвались
dima
хотя да вы правы, но это не отменяет того, что после обьявления паблик глобально, сервис через get не доступен, или я чего-то не знаю (((
Alexey Mishurovskiy
Вроде получилось, сейчас еще проверю дополнительно
Alexey Mishurovskiy
У нас так, все вроде работает без прописывания сервисов вручную
после добавления этого пришлось явно определить только переменные которые из ENV беруться
Konstantin
это кстати не помогает
так помогает или нет? я запутался
Alexey Mishurovskiy
переменную окружения?
В итоге вот так заработало, явно не пришлось зависимости указывать
Alexey Mishurovskiy
сейчас пишу тест для сервсиа в котором нет зависимости от переменных окружения, посмотрим, заработает или нет
Alexey Mishurovskiy
да
Nikolay
да
Так там autowire работает тоже
Alexey Mishurovskiy
Так там autowire работает тоже
он у меня был выключен как оказалось
Nikolay
Controller\CabinetController: ~ Но все равно придется вот так делать
Alexey Mishurovskiy
Konstantin
День добрый. Первый день в symfony. Прошу вашего совета, как бы вы реализовали парсер. Почитал доку, думаю сделать команду для парса сайта. Но может есть какое то более правильное решение для этой задачи
Alexey Mishurovskiy
Видимо тестовое на собеседование ))
Konstantin
Ахах, да))
Konstantin
Писал несколько лет до этого на laravel, дали тестовое на симфони
Konstantin
Вот, пришел на разведку, как правильнее всего будет это сделать
Alexey Mishurovskiy
Ну командой парсишь, потом на symfony web сервере запускаешь морду и там выводишь
Юра
Тебе там намекают что надо делать через интрфейс
Юра
Интерфейс парсера
Юра
Далее конкретные парсеры
Konstantin
лол
Юра
Чтобы была возможность другие сайты парсить
Alexey Mishurovskiy
Интересно было бы чтобы и тот кто дал тестовое и тот кто просит с ним помочь были бы в этом чате одновременно ))
Юра
))
dima
сам дал задачу, сам написал)
Konstantin
а если не секрет, на какую зп вакансия?
Alexey Mishurovskiy
сам дал задачу, сам написал)
А потом по почте ответил - вы нам не подходите ))))
Konstantin
а если не секрет, на какую зп вакансия?
хз, в вакансии написано до 110к
Konstantin
Но там fullstack (vue/nuxt + typescript)
Konstantin
ух)
Alexey Mishurovskiy
Вообще фулстеков не бывает
Konstantin
Согласен
Alexey Mishurovskiy
если фулстек = говнокод везде
Konstantin
На джуна берут