Не удается выполнить функциональное тестирование с адресом отправителя в службе или среде - PullRequest
1 голос
/ 31 марта 2019

Хотя можно создать переменную среды 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" - это меньший локатор службы

Я пробовал несколько вариантов темы добавлениясервис SwiftMailer в services.yaml безуспешно.Самая последняя итерация:

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