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