我正在尝试开始使用 Symfony2,并一直在尝试为我的应用程序的模型层设置自动化测试。 Symfony2 书讨论了 Controller 的单元测试,但我找不到很多模型测试的示例。
我希望在每次测试运行之前有一个干净的数据集可以使用并找到这些文章:
- http://blog.sznapka.pl/fully-isolated-tests-in-symfony2/
- http://symfony.com/doc/current/cookbook/doctrine/doctrine_fixtures.html
根据 sznapka.pl 文章,我有一个实际运行的测试,没有错误,但尽管创建了测试模式,但固定装置未加载。我不明白为什么,甚至不明白调试这个的方法。
背景:我之前使用过 CakePHP,其中装置的加载很大程度上是自动处理的,也许我对 Symfony/Doctrine 的方法有误?
最佳答案
是的,DoctrineFixtures 是一个不错的选择。
要测试模型:您实际上不需要在数据库中加载固定装置,您应该使用所需的数据创建对象(通过使用 setter 注入(inject)它)。
要测试 Controller :加载原则夹具并使用 doctrine transactions因此,每个测试用例之前数据库的状态都是相同的,在 setUp()
中开始事务并在 tearDow()
中回滚。 (如果您的 Controller 也使用事务,我还没有找到好的解决方案)。
对于灯具错误,如果您没有任何错误并且您的灯具未加载,则可能您错过了命名约定。您能给我们看一些代码吗?
关于unit-testing - 使用 PHPUnit 进行测试时如何设置 Doctrine2 夹具?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/6626318/