好吧,正如标题所示,我可以想到三种方法来管理测试数据库输出(我在我的应用程序中使用 ORM,在单元测试中使用 PDO)。哪个最好?你如何处理这个?:
最佳答案
您可能想阅读 PHPUnit's chapter on database testing .
我通过我自己的瘦包装器使用 PDO,它支持通过保存点进行嵌套事务。在 Bootstrap 中,我创建了一个测试数据库,其中包含整个生产结构以及非常基本的种子数据。在每个 setUp() 和 tearDown() 期间,我开始一个事务然后回滚。
每个测试都从原始 SQL 文件中导入所需的数据子集。从那里开始,ORM 使用真正的插入等进行测试。但这只有效,因为我的数据库驱动程序支持嵌套事务。如果测试开始/提交并检查成功/失败,一切仍然有效。
如果您没有嵌套事务支持,您可以在每次测试时设置和拆除整个数据库,但那样会更慢。请注意,您不必总是针对真实数据库进行测试……这取决于您要测试的内容。
https://stackoverflow.com/questions/12252823/