我已经研究了几个小时了,但我找不到在多个单元测试中回收单个 PDO 连接(MySQL)的方法。有这样的动物吗?
看来我应该在 Bootstrap 中以某种方式声明它,但 PDO 连接无法序列化,因此测试中断。
我想根据许多表中的模式测试数据集,因此我不想每次都访问数据库以建立新连接。
最佳答案
我的简短回答是:不要,只需在测试与数据库相关的代码的类中创建一个连接。
另一个选项是创建一个静态 setUpBeforeClass
,将连接分配给另一个静态属性:
public static function setUpBeforeClass()
{
self::$connection = new \PDO($dsn, $usr, $pwd, array());
}
这是执行此操作的有效方法,您应该在挖掘the documentation时遇到过。 。当然,由于连接是静态的,因此可以从全局范围访问,并且最好手动关闭。这是使用 tearDownAfterClass
方法完成的(同样,public static
是必需的):
public static function tearDownAfterClass()
{
self::$connection->rollBack();//? if required
self::$connection = null;
}
将这些方法视为构造函数和析构函数。它们的签名必须是公共(public)静态
,因为它们是通过反射调用的。
关于PHPUnit 重用 PDO 连接,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/18843129/