В документации пишут, что сервисы в тестировании доступны. Но тут же ссылаются на то, что при "копиляции" неиспользуемые "удаляются". И так получается, что у меня все сервисы недоступны в тестах...
Переопределяю их как публичные в "тестовом" проекте дл тестируемого бандла. Но в другом проекте эти тесты уже не запустятся, так как по умолчанию все сервисы приватные.
BoShurik, а я вообще правильно делаю? В тестовом проекте нужно переопределять все тестируемые сервисы на публичные, возможно по умолчанию их глобально все ставить публичными через секцию services:_defaults:
BoShurik, А я понятия не имею как по другому Бандлы тестировать. Мне подсказали создать отдельно "новый" проект сугубо для тестирования этого бандла. Клонировать реп бандла в папку проекта и писать тесты "из-под" этого тестового проекта. Затем прописать путь автолоад композера. Чтобы консоль была доступна и окружение более менее привычное было. Вот так и делаю.
grabbee, вероятно вам посоветовали создать проект для ручного тестирования, а не для unit-тестов.
Вообще в экосистеме есть куча бандлов, можно посмотреть как сделано у других. К примеру вот: https://github.com/BoShurik/TelegramBotBundle
BoShurik, у вас там кажется нет доступа к консоли. Чтобы сгенерировать новую ORM сущность или добавить связи. Чтобы проверить autowire или конфиг. Я привык к консоли симфони.
grabbee, ну вот для этого создаете отдельный проект, генерируете там сущности и переносите в бандл.
Autowire в бандлах крайне не рекомендуется, т.к. очень сильно влияет на производительность (https://symfony.com/doc/current/bundles/best_pract...)
BoShurik, не видел информации о производительности. Они вроде говорят о том, что пользователям бандла будет проще понять что к чему, если прописать всё явно. Контейнер же компилируется и кэшируется однократно.
The reason is that bundles shouldn’t rely on features such as service autowiring or autoconfiguration to not impose an overhead when compiling application services.
grabbee, кешируется, да. Чем больше классов в проекте, тем больше времени занимает компиляция. В итоге на крупном проекте в дев окружении через раз рискуете получать time-out от веб-сервера, т.к. были измены ресурсы и контейнер нужно пересобрать
Thanks to Symfony’s compiled container, there is no performance penalty for using autowiring. However, there is a small performance penalty in the dev environment, as the container may be rebuilt more often as you modify classes. If rebuilding your container is slow (possible on very large projects), you may not be able to use autowiring.
Судя по всему в проде не будет проблем с компиляцией.
grabbee, в проде не будет. Но я вам говорю по собственному опыту. Первая загрузка в деве на крупном проекте может занимать 30с, не стоит добивать это автоварингом в бандлах.