【问题标题】:Laravel phpunit testing mail sendingLaravel phpunit 测试邮件发送
【发布时间】:2017-06-07 11:38:26
【问题描述】:

我正在尝试在 laravel 5.1 应用程序中测试邮件发送。 我需要在产品服务器上运行测试。 我需要 MAIL_DRIVER=log 在应用环境中运行测试。 MAIL_DRIVER=smtp 用于我的 .env 文件中的生产。 我在应用程序根文件夹中编辑了 phpunit.xml 并添加了一行:

<env name="MAIL_DRIVER" value="log"/>

<php>
     <env name="APP_ENV" value="testing"/>
     <env name="CACHE_DRIVER" value="array"/>
     <env name="SESSION_DRIVER" value="array"/>
     <env name="QUEUE_DRIVER" value="sync"/>
     <env name="MAIL_DRIVER" value="log"/>
</php>

问题是当我运行测试时它仍然使用 MAIL_DRIVER=smtp

知道有什么问题吗?

【问题讨论】:

  • 你在哪里提到过 smtp?
  • 我在我的 .env 文件中设置

标签: php email laravel-5 phpunit


【解决方案1】:

尝试直接重新定义邮件传输类型。更改环境常量将无济于事(或共享使用 MAIL_DRIVER 的代码)。

【讨论】:

  • 我使用来自 laracast 的源代码并在 github 上共享 gist.github.com/JeffreyWay/b501c53d958b07b8a332
  • 为 SwiftMailer 类创建一个 mock 并覆盖 send-function
  • 实际上我需要邮件继续发送,但要登录...我找不到为什么邮件程序继续使用 smtp。我尝试将 config/mail.php 和硬编码驱动程序密钥更改为“log”,然后从 .env 文件中删除 MAIL_DRIVER 选项,但应用程序继续使用 smtp。我可以更改它的唯一方法是修复 .env 文件。现在我可以看到版本 phpunit.xml 没有意义......
  • 是否可以强制应用程序使用另一个 .env 文件进行测试?
  • 当然,这是最佳实践的一部分(用于 DEV/LIVE/TEST 不同的配置)。它可以是一个文件的一部分,也可以是多个文件。选择由 vhost 中的 setevn 完成(在您的情况下:&lt;env name="APP_ENV" value="testing"/&gt;)。
猜你喜欢
  • 2023-03-13
  • 1970-01-01
  • 2017-09-22
  • 2019-10-09
  • 2011-05-26
  • 2017-11-29
  • 1970-01-01
  • 2017-01-01
  • 2013-10-31
相关资源
最近更新 更多