dima
Alexey Mishurovskiy
Alexey Mishurovskiy
помогает только явно объявить сервис с зависимостями
Alexey Mishurovskiy
Nikolay
https://stackoverflow.com/questions/68865038/how-to-access-a-private-service-in-symfony-5-3-phpunit-tests
Konstantin
мошт компайлер-пасс/экстеншн написать?
Konstantin
говнорешение, но точно сработает
Konstantin
нормальное - понять как правильно конфигурить контейнер для тестов
Konstantin
не может быть, что в симфони никто этого не сделал
Konstantin
но как быстрое решение - быстро написать мелкий компайлер-пасс
dima
dima
вроде на сайте симфони все описано))
Nikolay
dima
А по другому как
а в чем проблема в тестовом окружении делать все сервисы публичными?
Nikolay
Konstantin
надо понять как получить незапечатанный контейнер
Konstantin
то что в компайлер-пассах ContainerBuilder. я когда-то раньше такое делал, но щас под рукой кода нет - я в машине в горы еду :)
Nikolay
Сергей
У нас так, все вроде работает без прописывания сервисов вручную
Konstantin
dima
Nikolay
services:
_defaults:
public: true
Можно вот так сделать, но сервисы все равно объявлять придется
dima
Ivan
Сталкивался недавно. Отдельно нужно прописывать сервис, если он нигде более не вызывается. Если в рабочем коде идёт работа с ним, то он и так будет доступен.
dima
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);
}
Ivan
Не факт. Может вначале тесты пишет к нему, а потом уже использовать будет.
Konstantin
сегодня использует, завтра - убрал временно зависимость от этого сервиса. а у тебя тесты взорвались
dima
хотя да вы правы, но это не отменяет того, что после обьявления паблик глобально, сервис через get не доступен, или я чего-то не знаю (((
dima
Alexey Mishurovskiy
Вроде получилось, сейчас еще проверю дополнительно
dima
Alexey Mishurovskiy
переменную окружения?
В итоге вот так заработало, явно не пришлось зависимости указывать
dima
Alexey Mishurovskiy
сейчас пишу тест для сервсиа в котором нет зависимости от переменных окружения, посмотрим, заработает или нет
Nikolay
Alexey Mishurovskiy
да
Nikolay
да
Так там autowire работает тоже
Nikolay
Controller\CabinetController: ~
Но все равно придется вот так делать
Alexey Mishurovskiy
Konstantin
День добрый. Первый день в symfony. Прошу вашего совета, как бы вы реализовали парсер. Почитал доку, думаю сделать команду для парса сайта. Но может есть какое то более правильное решение для этой задачи
Alexey Mishurovskiy
Видимо тестовое на собеседование ))
Konstantin
Ахах, да))
Konstantin
Писал несколько лет до этого на laravel, дали тестовое на симфони
Konstantin
Вот, пришел на разведку, как правильнее всего будет это сделать
Alexey Mishurovskiy
Ну командой парсишь, потом на symfony web сервере запускаешь морду и там выводишь
Юра
Тебе там намекают что надо делать через интрфейс
Юра
Интерфейс парсера
Юра
Далее конкретные парсеры
Konstantin
лол
Юра
Чтобы была возможность другие сайты парсить
Alexey Mishurovskiy
Интересно было бы чтобы и тот кто дал тестовое и тот кто просит с ним помочь были бы в этом чате одновременно ))
dima
Юра
))
dima
сам дал задачу, сам написал)
Konstantin
а если не секрет, на какую зп вакансия?
Konstantin
Konstantin
Konstantin
Но там fullstack (vue/nuxt + typescript)
Konstantin
ух)
Alexey Mishurovskiy
Вообще фулстеков не бывает
Konstantin
Согласен
Alexey Mishurovskiy
если фулстек = говнокод везде
Konstantin
На джуна берут