2016-05-17 54 views
1

Laravel 5按照什麼順序在單個類中調用測試用例?Laravel 5單元測試調用方法訂單

它們是從上到下調用​​的嗎?按字母順序?我可以指定訂單嗎?

含義,我想測試API調用從開始: POST(創建訂單), GET(讀取新創建的順序), DELETE(刪除順序)。這將是很好的,如果我可以做到這一點作爲3個獨立的自動測試,但我不知道,如果他們將始終執行INT特定的順序。

+0

看看這個https://phpunit.de/manual/current/en/writing-tests-for-phpunit.html#writing-tests-for-phpunit.test-dependencies,它並不完全管理測試的順序,但它允許你的測試返回數據在另一個測試中使用 – Dale

回答

2

你不應該中繼測試的順序,而不是做這樣的事情:

  1. 做一個POST請求,並斷言,帖子被創建。
  2. 手動創建訂單,然後發出GET請求並聲明訂單已找到
  3. 手動創建訂單,然後發出DELETE請求並聲明訂單已被刪除。

數據不應該在測試之間持續存在,請使用Illuminate\Foundation\Testing\DatabaseTransactionsIlluminate\Foundation\Testing\DatabaseMigrations

查看更多信息:https://laravel.com/docs/5.2/testing#resetting-the-database-after-each-test

+0

我已經做了這樣的事情:'公共功能testOrder(){$ clientOrderId = $ this-> order(); $ this-> assertInternalType('string',$ clientOrderId); $這 - > assertNotEmpty($ clientOrderId); $這 - > OrderStatus($ clientOrderId); $這 - > DeleteOrder($ clientOrderId); ''但我希望能夠獨立運行它們,而無需進行新的測試。 – Peon

1

您可以使用@depends註解來確保一個測試陸續運行,但@scrubmx指出的那樣,你的測試不應該執行的順序接力。否則,如果createOrder測試失敗,測試的其餘部分將不會執行。如果數據是由另一個測試用例隱式創建的,而不是明確地在對其進行操作的數據庫中創建的,那麼維護不斷增長的測試套件就更困難了,因爲您將要測試的數據的變體越來越多。