2015-07-21 87 views
1

爲了簡單起見,假設我有這個模式。使用Symfony中的自定義數據庫數據設置功能測試

A Machine,SiteUserTask相關聯。 A Task可以有許多(如至少二十個)不同的TaskDetail's。

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和其他一些網頁,我還沒有找到任何概述如何做我想問的問題 - 這對我來說似乎是一個相當簡單的測試案例。

所以任何指針都是值得歡迎的。謝謝。

+0

看一看[此](http://www.elao.com/fr/blog/symfony2-how-to-share-objects-when-writing-fixtures )文章 – Matteo

回答

2

查看Doctrine Fixtures,它們允許您將受控數據集加載到數據庫中進行測試,甚至可以確保您有一些初始數據。

的Symfony2與學說燈具通過DoctrineFixturesBundle.

寫夾具對於那些以確保有足夠的數據進行測試所需的所有實體很好的整合。然後,您可以使用套件提供的控制檯命令實際加載燈具。然後你可以照常進行功能測試。

也請按照這些文章來單元測試與數據庫交互的代碼。

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

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

+0

你有沒有使用http://factory-muffin.thephpleague.com/的經驗? – b85411

+2

賽程真的很順利。除此之外,您可以使用[LiipFunctionnalTestBundle](https://github.com/liip/LiipFunctionalTestBundle),它們將它們更好地集成在測試中,並使用Sqlite3 DB進行測試。 – AntoineWDG

+0

謝謝 - 該捆綁看起來很棒。 – b85411

相關問題