【问题标题】:Setting up functional tests with custom database data in Symfony在 Symfony 中使用自定义数据库数据设置功能测试
【发布时间】:2015-10-10 12:48:51
【问题描述】:

为了简单起见,假设我有这个架构。

MachineSiteUserTask 相关联。一个Task 可以有许多(比如说至少二十个)不同的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 个任务?

我查看了http://symfony.com/doc/current/cookbook/testing/database.html 和其他几页,但我还没有找到任何概述如何执行我所要求的内容的内容 - 这对我来说似乎是一个相当简单的测试用例。

所以当然欢迎任何指针。谢谢。

【问题讨论】:

  • 看看this的文章

标签: php database symfony testing phpunit


【解决方案1】:

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

symfony2 通过DoctrineFixturesBundle. 与教义装置有很好的集成

为所有需要的实体编写固定装置,以确保有足够的数据进行测试。然后,您可以使用捆绑包提供的控制台命令实际加载固定装置。然后您可以像往常一样进行功能测试。

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

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

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

【讨论】:

  • 夹具确实是要走的路。除此之外,您还可以使用LiipFunctionnalTestBundle,它将它们更好地集成在测试中,并使用 Sqlite3 DB 进行测试。
  • 谢谢 - 这个包看起来很棒。
猜你喜欢
  • 2013-11-04
  • 1970-01-01
  • 2014-08-02
  • 1970-01-01
  • 2018-11-14
  • 1970-01-01
  • 2013-01-08
  • 1970-01-01
  • 1970-01-01
相关资源
最近更新 更多