2

我已经研究了几个小时,但我找不到在多个单元测试中回收单个 PDO 连接(MySQL)的方法。有这样的动物吗?

似乎我应该在引导程序中以某种方式声明它,但 PDO 连接无法序列化,因此测试中断。

我想在很多表中针对模式测试数据集,所以我不想每次都在数据库中建立新连接。

4

1 回答 1

3

我的简短回答是:不要,只需在测试您的数据库相关代码的类中创建一个连接。
另一种选择是创建一个静态setUpBeforeClass,将连接分配给另一个静态属性:

public static function setUpBeforeClass()
{
    self::$connection = new \PDO($dsn, $usr, $pwd, array());
}

这是执行此操作的有效方法,您应该在浏览文档时遇到这种方法。当然,由于连接是静态的,它可以从全局范围内访问,并且最好手动关闭。这是使用tearDownAfterClass方法完成的(同样,public static是必需的):

public static function tearDownAfterClass()
{
    self::$connection->rollBack();//? if required
    self::$connection = null;
}

将这些方法视为构造函数和析构函数。它们的签名必须public static,因为它们是通过反射调用的。

于 2013-09-17T07:10:18.717 回答