2011-07-08 50 views
28

我试图开始使用Symfony2,并一直试图为我的应用程序的模型层设置自动化测试。 Symfony2书讨论了控制器的单元测试,但是我找不到很多模型测试的例子。如何在使用PHPUnit进行测试时设置Doctrine2灯具?

我想有一个干净的数据集与每个测试运行之前上班,发现这些文章:

基础上sznapka.pl文章中,我有一个测试实际运行没有错误,但尽管测试模式已创建,灯具不会加载。我看不出为什么,甚至是一种调试方法。

背景:我以前曾与CakePHP一起工作,其中加载的灯具很大程度上是自动处理的,也许我对Symfony/Doctrine有错误的方法?

+0

(开始对放弃这个问题感到内疚。)不得不从Symfony的探索转移到其他项目,但希望很快回来。我现在的感觉是,Symfony中较轻的方法更适合,正如下面的jules所建议的那样。例如,我们不需要测试持久层,我们应该总是尝试围绕对象图的边缘进行测试。 – contrebis

回答

6

是的DoctrineFixtures是一个不错的选择。

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

给测试控制器:负荷学说装置和使用doctrine transactions所以你的数据库的状态是每个测试用例之前一样,在setUp()和回滚开始tearDow()交易。 (如果你的控制器也使用交易,我还没有找到一个好的解决方案)。

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

4

看看this solution。我不认为使用交易是最好的想法,因为您有可能会在代码中使用交易。此解决方案建议您在每个测试中手动加载固件。

3

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

相关问题