如何在使用PHPUnit进行测试时设置Doctrine2灯具?

时间:2011-07-08 14:59:13

标签: unit-testing doctrine-orm symfony

我正在尝试使用Symfony2,并一直在尝试为我的应用程序的模型层设置自动化测试。 Symfony2书谈到了控制器的单元测试,但我找不到很多模型测试的例子。

我希望在每次测试运行之前都有一个干净的数据集,并找到这些文章:

基于sznapka.pl文章,我有一个测试实际上没有错误地运行,但是虽然创建了测试模式,但是没有加载。我不明白为什么,甚至是一种调试方法。

背景:我之前使用的是CakePHP,其中装置的装载很大程度上是自动处理的,也许我对Symfony / Doctrine有错误的方法?

3 个答案:

答案 0 :(得分:6)

是DoctrineFixtures是一个不错的选择。

测试模型你真的不需要在数据库中加载灯具,你应该用你想要的数据创建对象(通过用setter注入它)。

要测试控制器:加载doctrine fixtures并使用doctrine transactions,这样在每个测试用例之前数据库的状态是相同的,在setUp()中开始事务并在{{回滚1}}。 (如果您的控制器也使用了交易,我还没有找到一个好的解决方案。)

对于灯具错误,如果您没有任何错误并且未加载灯具,则可能错过了命名约定。你能告诉我们一些代码吗?

答案 1 :(得分:4)

看看this solution。我不认为使用事务是最好的主意,因为您可能会在代码中使用事务。此解决方案建议在每次测试中手动加载灯具。

答案 2 :(得分:4)

有一个非常方便的LiipFunctionalTestBundle,可以简化在测试中使用灯具的工作。基本思想是每次运行测试然后加载fixture时创建一个数据库。现在你可以保存模型,删除,每次测试都是一样的。