Всем привет. Пишу системные тесты (Symfony + PHPUnit) и использую

транзакцию EntityManagerInterface для тест кейса, однако api-методы, которые используют \Symfony\Component\Messenger\Handler\MessageHandlerInterface падают, потому что доктрина не может сделать autoSetup таблицы для MessageHandler при транзакции и кидает исключение. Есть ли возможность как-то это обойти, ну или переосмыслить подход?

Table 'foo.messenger_messages' doesn't exist in /srv/app/vendor/symfony/doctrine-messenger/Transport/DoctrineSender.php

10 ответов

17 просмотров

А че в тестах не делать синхронный транспорт? В своём проекте в тест окружении делаю sync:// для асинхронных транспортов До этого работал в проекте, где был самопис, но тоже перемычку делали… дабы не париться

Максим Федоров
А че в тестах не делать синхронный транспорт? В с...

Гораздо логичнее вообще использовать inMemory:// транспорт в тестах, кроме е2е, разве нет?

Максим Федоров
А че в тестах не делать синхронный транспорт? В с...

а потом ловить баги что кто-то завязался на то что все синхронно)

Sergey P
а потом ловить баги что кто-то завязался на то что...

Не вижу описанных вами рисков, что ходило синхронно — выполнится Что было отдельным каналом и сидело за выполнением команды — выполнится

Максим Федоров
Нет, смысл?

Чтобы отдельно тестить компоненты, например.

Максим Федоров
Не вижу описанных вами рисков, что ходило синхронн...

Мне кажется Сергей имел ввиду тот момент, что если события А и Б должны выполнится строго последовательно, то в тестовом окружении, где sync, они так и выполнятся. А на проде с асинком - не факт. И тут нужно уточнить что этот функционал может писать не один человек а несколько. Т.е. первый написал транспорт, с второй его использует, и при использовании на доглядел/не читал описание что команды на прод выполняются асинхронно и пошел писать синхронной код. И эта бага на тесте не вылезет.

возьмите этот свежий пакет https://github.com/zenstruck/messenger-test там можно ловить сообщения, вешать ассерты к очередям или сообщениям, можно процессить на лету крч удобно, просто в тест-среде нужно определить трансопрт как test://

Похожие вопросы

Обсуждают сегодня

Подскажите, а есть vault lite или ченить такое?) А то нужен вольт для похода в вольт, но весит он ~500 мб) как-то многовато для парочки запросов ))
Alexandr Orloff
17
Всем привет, есть небольшая проблема Есть такой скрипт document.addEventListener('DOMContentLoaded', function () { const sliderTabs = document.querySelectorAll('.s...
A da
8
@go1337 @dblackCat Привет. Все ещё дрочусь с fastpanel. Добавил второй домен который должен смотреть в рут того же сайта, но так как это просто домен, а не сайт, я не могу ему...
Ross 🦴
9
До речі, в ево нема можливості чи якого розширення щоб з адмінки з телефона зайти і терміново щось в верстці поправити?
Женя
7
кто-нибудь пользуется тайм-трекерами во время работы? так много разных нагуглил, может есть что-то популярное
Lencore
8
Пацаны. Я разрабатываю софт для инвайтинга на телетон, и столкнулся с такой проблемой, в один из чатов не могу приглашать никого, не дает добавлять, в то же время через официа...
Kernel Panic
11
Скажите, а кому нужен Currency как отдельный плагин вместо полноценного ecommerce в OctoberCMS? Кто-то использует его уже или планирует в будущем? Может я что-то не понимаю?
Igor
13
Розмовами про Рево мені нагадали часи, коли шаблони правилися прямо в адмінці. Хто в курсі, чому відійшли від цієї практики, так блейд не працює? Доволі зручно ж було (інколи)
Женя
3
Всем добрый вечер, Рад оказаться в кругу единомышленников. Начинаю погружаться в мир .net веба. Зовут Ерасыл 🖖 У меня назрел вопрос: Какой процент проектов, прошедшие через в...
Ерасыл
6
Чому? Да тому що без GiT не уявляю нормального проекта а коли код в базі то то так собі
Dmytro Lukianenko
3
Карта сайта