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