由于服务已初始化或测试,因此无法测试Swift_Mailer。别名被忽略

时间:2020-04-14 20:19:10

标签: unit-testing symfony phpunit symfony-2.1 symfony5

我已经发现了一些信息,例如 Symfony2 access private services in tests 要么 Replace Symfony service in tests for php 7.2

但是我不知道为什么它不起作用。

我有自动装配服务。

class MailService {

    public function __construct(\Swift_Mailer $mailer, Environment $twig)
    {
        $this->mailer = $mailer;
        $this->twig = $twig;
    }

}

config / services_test.yaml

services:
    # default configuration for services in *this* file
    _defaults:
        #autowire: true      # Automatically injects dependencies in your services.
        #autoconfigure: true # Automatically registers your services as commands, event subscribers, etc.
        public: true

    test.swiftmailer.transport: '@Swift_Mailer'

当我尝试更换时。

        $mailer = $this->getMockBuilder(\Swift_Mailer::class)
            ->disableOriginalConstructor()
            ->getMock();
        $mailer->expects($this->once())->method('send')->willReturn(1);
        self::$container->set('swiftmailer.mailer.default', $mailer);
        self::$container->set('swiftmailer.default', $mailer);
        self::$container->set('swiftmailer.mailers', [$mailer]);

但是我不知道为什么它不起作用。

有什么想法吗? :)

0 个答案:

没有答案