在Symfony

时间:2015-07-21 07:22:47

标签: php database symfony testing phpunit

为了简单起见,我们说我有这种模式。

MachineSiteUserTask相关联。 Task可以有多个(比如说至少20个)不同的TaskDetail

Task

task_id (int PK)
machine_id (int FK)
user_id (int FK)
site_id (int FK)
task_name (varchar)
task_time (int)

TaskDetail

task_detail_id (int PK)
task_id (int FK)
task_detail_value (varchar)

Machine

machine_id (int PK)
machine_name (varchar)

User

user_id (int PK)
user_name (varchar)
user_register_time (int)

Site

site_id (int PK)
site_name (varchar)

如何使用Symfony最好地填充测试数据?我使用PHPUnit作为测试框架。

之前我曾在Symfony中编写功能测试,但从未测试数据库中的数据。它总是局限于更简单的测试(下拉菜单中包含以下项目等)。

例如,在我的任务列表页面上 - 我想测试出现的5个任务。我如何设置一个测试,以便我用5个任务填充数据库(我想我需要在某个地方进行硬编码?),然后测试该页面的输出是否显示了我创建的那5个任务? / p>

我查看了http://symfony.com/doc/current/cookbook/testing/database.html和其他一些页面,但我还没有找到任何概述如何做我要问的事情 - 这似乎是一个相当简单的测试案例我

所以任何指针都是受欢迎的。感谢。

1 个答案:

答案 0 :(得分:2)

看看Doctrine Fixtures,它们允许您将受控数据集加载到数据库中进行测试,甚至确保您拥有一些初始数据。

symfony2通过DoctrineFixturesBundle.

与教条装置很好地融合

为确保有足够数据进行测试所需的所有实体编写灯具。然后你可以使用bundle提供的控制台命令实际加载灯具。然后你可以像往常一样进行功能测试。

还要按照这些文章对与数据库交互的代码进行单元测试。

http://symfony.com/doc/current/cookbook/testing/database.html

http://symfony.com/doc/current/cookbook/testing/doctrine.html