Symfony 5测试邮件时MessageLoggerListener服务不可用如何解决
Symfony 5 测试环境启用 MessageLoggerListener 方案
前置检查
- 确认
.env.test文件中APP_DEBUG参数值为1,MessageLoggerListener仅在debug模式开启时会被默认注册
第一步:配置测试环境邮件日志
修改config/packages/test/framework.yaml,显式开启邮件日志记录:
framework: mailer: # 开启邮件日志,触发MessageLoggerListener注册 logging: true
第二步:暴露服务到测试容器
mailer.message_logger_listener默认是私有服务,外部无法直接获取,需要在config/services_test.yaml中将其设为公共服务:
services: mailer.message_logger_listener: public: true
第三步:验证配置生效
执行以下命令检查服务是否正常注册:
bin/console debug:container mailer.message_logger_listener --env=test
如果输出服务的详细信息即表示配置成功,你可以在Behat上下文中通过容器直接获取该服务,适配MailerAssertionsTrait的相关断言方法完成邮件投递验证。
常见兼容说明
- 无需修改
MAILER_DSN配置,无论使用null传输还是实际传输协议,只要开启日志配置,所有已发送邮件都会被MessageLoggerListener捕获 - 若仍无法获取服务,可尝试清除测试环境缓存:
bin/console cache:clear --env=test
内容的提问来源于stack exchange,提问作者Subsurf
相关产品推荐
相关产品推荐

