无法在服务或环境中使用发件人地址进行功能测试

时间:2019-03-30 21:47:13

标签: php symfony symfony4 swiftmailer

虽然可以创建环境变量SENDER_ADDRESS并在控制器中访问它,但该地址在功能测试中不可用。这是由于\tests目录与\src处于同一级别。在环境服务EnvService中:

use Symfony\Component\Dotenv\Dotenv;

class EnvService
{
    public function mailSender() {
        $dotenv = new Dotenv();
        $dotenv->load('../.env');
        $sender = getenv('SENDER_ADDRESS');

        return $sender;
    }
}

然后在控制器中

    public function invite(Request $request, \Swift_Mailer $mailer, EnvService $env)
    {
        $invite = new Invitation();
        $form = $this->createForm(InvitationType::class, $invite);
        $form->handleRequest($request);
        if ($form->isSubmitted() && $form->isValid()) {
            $invitation = $request->request->get('invitation');
//            $sender = $this->get('mailer.sender_address');
            $sender = $env->mailSender();
...

将发送电子邮件。

但是在功能测试中会发生此错误:

  

无法读取“ ../.env”环境文件

如果相反,将swiftmailer.yaml修改为包含sender_address: 'admin@bogus.info'错误

  

找不到服务“ swiftmailer.sender_address”:其中的容器   “ App \ Controller \ RegistrationController”是一个较小的服务定位器

我曾尝试过在services.yaml中添加SwiftMailer服务这一主题,但没有成功。最新的迭代是:

swiftmailer:
    class: 'Swift_Mailer\Swift\Mailer'
    sender_address: 'admin@bogus.info'
    public: true

0 个答案:

没有答案