unit-testing - 无法测试 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]);
但我不知道为什么它不起作用。
有任何想法吗?:)
解决方案
推荐阅读
- javascript - JavaScript:从 URL 搜索参数中删除值
- python - 计算数据透视表中的百分比 - python
- swift - 异步 Swift 问题
- c - C:结构指针数组
- javascript - 如何使用 React powerplug 的悬停来添加和删除类?
- jsonschema - 如何让 AJV (v5.0.0) 使用 JSON Schema 0.7?
- pyqt - 如何设置工具栏/菜单操作以使用 Qt 5 中的相关系统默认图标?
- c# - 通过 foreach 循环使用 httpClient.SendAsync(request) 解析 JSON
- angular - 在带有 Angular 的 Electron 中使用 SerialPort 在构建时失败
- javascript - every 方法在 javascript 中不起作用