Anonymous
Я понял понял
Eugen Su
А все остальные аргументы тоже из энвов?
Anonymous
Eugen Su
У меня что то такое было с ямлом, но не в контексте симфони. Ты там их не конуатенируешь никак?
Anonymous
Не-а. Просто '%env(param_name)%', а в энв param_name="какая-то:строка"
Eugen Su
Тогда не этот кейс.
Eugen Su
Ну на всякий случай уточню, в энвах же есть эта строка?)
Anonymous
Офкорс
Anonymous
Названия стрл+с стрл+в один в один
Anonymous
Названия переменных их ямла так же один в один в классе
Eugen Su
Посмотри, он аще есть в контейнере
Eugen Su
Захерачь куда нибудь контейнер)
Anonymous
Вот куда, чем посмотреть
Anonymous
debug:container выдаёт лишь инфу по тегам контейнера
Eugen Su
Ну можешь контейнер подебажить либо заинжектить его куда нибудь
Eugen Su
И там гет параметр сделать
Anonymous
Ммм
Anonymous
Публичный контейнер делать
Eugen Su
Да он и так доступен, в контроллер какой возьми и оттуда дерни, посмотри что внутри
Anonymous
Всм доступен
Anonymous
Если он приватный
Anonymous
Разве это так работает?
Eugen Su
class MainController implements ContainerAwareInterface { use ContainerAwareTrait;
Eugen Su
🤷♂
Anonymous
Anonymous
Всем спасибо
Андрей
Народ, подскажите плиз. Есть жутк- легаси проект, есть мысль начать использовать ряд симфони компонентов (но не как independent, а всё таки в рамках симфони приложения) и реализовывать новый (или переписанный старый код) уже внутри папки симфони.
Идея очень спорная, но тем не менее есть вопрос. Существует ли адекватный способ дергать сервисы симфы из легаси кода, вне папки самого фреймворка.
Eugen Su
Если ты хочешь переезжать, то я бы это разруливал нджинксом
Eugen Su
Это как бэ самый верный и удобный путь
Андрей
Eugen Su
Ну если хочешь с легаси переехать на симфони, полноценно, а потом сжечь нах старый код, то флоу обычно такой рядом делаешь симфони приложуху, синзришь все с бд и начинаешь по одному методу апи переносить на симфони, не забывая в нджинксе указывать что если к тебе пришёл запрос по такому то пути, то он должен идти уже в симфони а не в старый проект
Eugen Su
Но это надо быть оч внимательным и перед этим желательно метод обложить тестами и там и там
Андрей
Поэтому нужно понять, есть ли способ дергать сервисы симфы из легаси. Иначе - нужен будет другой подход (использовать симфони компоненты как индепендед)
Андрей
Еще вопрос, есть у кого опыт использования rabbitmq+ symfony/messenger как independent компонента (вне симфы)
netspike
Андрей
Maxim Kainov
Сергей
Андрей
Anonymous
Мессенгер?
Anonymous
Да ладно вам, "не нужен"
Anonymous
Им можно вместо того чтоб тянуть депенденси в композер по типу amqpbundle пользоваться
Андрей
А нафига тебе amqp бандл? Тебе с очередью работать? Клиент пишется на коленке за 3 минуты и умеет ровно то, что тебе нужно.
Anonymous
:\
Anonymous
Я вообще portiny использую
Maxim Kainov
Anonymous
чуваки, может кто подсказать по пхпюниту с симфони? в общем есть у меня доктриновская сущность, для нее пишу тест сервиса.
если не мокать сам класс сервиса, а создавать его как new, то нужно создавать id для мока сущности, потому что в сервисе происходит обновление id этой сущности в базе.
если мокать сам класс через mockBuilder, то происходит ошибка Failed asserting that MockedObject matches expected Object.
и как-то я запутался, почему так происходит, и как это исправить можно
не поможете ль?
Сергей
если тест на сервис, то его точно мокать не нужно.
замокать сущность что отдачи нужного id - пожалуйста.
$mock = $this->createMock(Enitity::class)->method('getid')->willReturn(1);
$service = new Service();
$service->update($mock);
где там ошибка?
Сергей
сущность как раз не надо мокать, если хочешь проверить что у нее поля изменяются.
Anonymous
$mockedService = $this->getMockBuilder(Service::class)
->setMethods(['createMessage'])
->disableOriginalConstructor()
->getMock();
$mockService->expects(self::once())
->method('createMessage')
->with(Class1::class, Class2::class)
->willReturn(Message::class);
$result = $mockService->createMessage($mock1, $mock2);
при выполнении выдает как раз ту ошибку
Anonymous
mock1 и mock2 создаю как new Class1, new Class2
Сергей
ты че типа замокал сервис и его тестируешь?)))
Сергей
тест пройден))
Anonymous
да я ваще хз лол
Anonymous
до этого я пробовал именно через new Service, и он ругался что при создании Message он пытается сделать $message->getId() но он возвращает null
Сергей
так у тебя в мессадже id не задан. Создай нормальный мессадж и всё
Anonymous
так а смысл тогда сервис тестировать если я мессадж создаю?)
Сергей
а...понял.
Ну значит у тебя мессадж создается с пустым айдишником
Anonymous
ну так да. как это обойти, задать параметр может как-то чтобы айди был допустим 1
Anonymous
или даже 0
Сергей
а что за параметры у метода createMessage?
Anonymous
два класса, которые я создаю через new
Сергей
ты $reuslt будешь проверять, его корректность или че?
Anonymous
ну мне по задаче надо проверять именно что работают внутренние сервисы в которых бизнес-логика работы с сущностями
Anonymous
айдишник просто генерируется доктриной)))))))))
Anonymous
не uuid
Сергей
ну значит на момент создания мессаджа его нет. В чем тогда вопрос?
Anonymous
как этого избежать, логично
Сергей
чего избежать?)
Anonymous
или это нужно тестировать и соединение с бд и прочее прочее?
Сергей
тебе же надо проверить корректность работы метода.. Если метод не должен создавать айдишник, то и проверять этот айдишник не нужно.
Anonymous
метод должен создавать сущность, обновлять id и засовывать в специальное поле, производить там еще логику и возвращать созданную сущность
Anonymous
айди он берет из самой сущности при инстанциировании ее через new
Сергей
ну что, вариант с моком getid не ? я так понимаю это не важно для конкретного этого теста
Anonymous
Anonymous
может быть не стоит мокать EntityManagerInterface, которым инстанцируется Service?