1

好吧,如标题所示,我可以想到三种管理测试数据库输出的方法(我在我的应用程序中使用 ORM,在单元测试中使用 PDO)。哪个是最好的?你如何处理这个?:

  1. 使用我想要专门用于测试的数据创建数据集,并更改代码以使其读取 xml 而不是 ORM 数组(在测试类中)。

  2. 创建 setUp() 方法,设置包含 ORM 数组的属性,然后处理它。

  3. 与第二点相同,但使用另一个数据库,专门为测试而创建
4

2 回答 2

8

您可能想阅读PHPUnit 关于数据库测试的章节

我通过自己的瘦包装器使用 PDO,该包装器通过保存点支持嵌套事务。在引导程序中,我创建了一个测试数据库,其中包含整个生产结构以及非常基本的种子数据。在每个 setUp() 和 tearDown() 期间,我开始一个事务,然后回滚。

每个测试从原始 SQL 文件中导入它需要的数据子集。从那里,ORM 使用真正的插入等进行测试。但这仅适用于我的数据库驱动程序支持嵌套事务。如果测试开始/提交并检查成功/失败,一切仍然有效。

如果您没有嵌套事务支持,您可以在每次测试时设置和拆除整个数据库,但这会更慢。请注意,您不必总是针对真实数据库进行测试……这取决于您要测试的内容类型。

于 2012-09-03T19:09:21.907 回答
2

在我的测试中,我使用了一个测试数据库。

MySQL 在其站点上有一些测试数据库。我觉得Sakila相当困难,所以我使用World数据库。

于 2012-09-03T19:04:11.767 回答