首页 > 解决方案 > 无法测试 Swift_Mailer,因为服务已经初始化或测试。别名被忽略

问题描述

我已经发现了一些信息,例如 Symfony2 在测试中访问私有服务在 php 7.2 的测试中替换 Symfony 服务

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

我有一个自动装配服务。

class MailService {

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

}

配置/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]);

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

有任何想法吗?:)

标签: unit-testingsymfonyphpunitsymfony-2.1symfony5

解决方案


推荐阅读