目前测试与 Symfony2 数据库交互的最佳实践是什么?我有一个简单的 CRUD 设置,我想确保我的测试没问题。现在,我有 4 个测试,每一个测试都确保创建、更新、删除和列出操作正常发生。
我的测试用例有两个神奇的方法: __construct 和 __destruct。在它们内部,我使用“php app/console ...”调用 exec() 以创建数据库、创建模式,然后删除数据库。然而,这太慢了,当我有多个测试用例时,这种情况总是会发生。
当涉及到数据库测试和隔离此类测试时,我应该如何进行?
我认为最好总是从干净开始,以确保测试完全隔离。为此,我只需在每次测试之前构建数据库结构,然后用给定测试所需的固定装置填充它。
请注意,我仅构建所需的数据库表,并且仅插入所需的装置。它比加载大型数据库转储要快一些。它也更干净,因为测试不共享固定装置(这使得它们更容易维护)。
我有一个名为 KernelAwareTest 的基本测试用例类,它可以帮助我构建架构。你可以在要点上找到它:https://gist.github.com/1319290 https://gist.github.com/1319290
setUp()
启动 Symfony 内核并将对其的引用存储在类属性中(以及对 DIC 和实体管理器的引用)。还请致电generateSchema()
用于生成数据库模式(它使用 Doctrine 中的模式工具)。
默认情况下,它为实体管理器已知的所有实体生成数据库结构。您可以通过覆盖测试类来更改此行为getMetadatas()
method.
P.S.:我尝试使用内存数据库(sqlite),但它并不完美。无论如何,最好对您在生产中使用的数据库运行测试。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)