2013-05-01 87 views
9

我正在使用CakePHP 2.3並希望知道如何正確使用測試驅動開發(TDD)構建CakePHP網站。我讀過the official documentation on testing,閱讀Mark Story的Testing CakePHP Controllers the hard way,並觀看了Mark Story的Win at life with Unit testingPDF of slides),但我仍然感到困惑。我應該注意到,我用任何語言撰寫測試的過程都不太好,也沒有太多的經驗,這可能會導致我的困惑。CakePHP中的測試驅動開發

我想看看如何使用TDD構建CakePHP網站的代碼示例的逐步演練。有關於TDD的文章,有關於CakePHP測試的文章,但是我還沒有找到關於這兩者的深入文章。我希望在整個過程中保持我的手。我意識到這是一個很高的順序,因爲除非我的Google-fu失敗了我,我很確定這樣的文章還沒有發佈,所以我基本上要求你寫一篇文章(或者長篇堆棧溢出答案),這需要時間。因爲這是一項艱鉅的任務,我計劃在這個問題上得到一個值得許多觀點的獎勵,以便更好地獎勵某人的努力,如果有人願意這樣做的話。我感謝你的時間。

+0

你究竟想要什麼,我的意思是如何深度。你能舉個例子來幫助我理解你的意思嗎? – ncm 2013-05-06 05:00:03

+0

也需要時間,可能比邦迪會結束的時間還多。 – ncm 2013-05-06 05:05:39

回答

10

TDD有一點瑕疵,因爲它基本上只是在編寫代碼之前編寫測試以確保您正在編寫測試。

所有你需要做的就是在你創建一個東西之前創建你的測試。這需要想法和您的用例分析,以編寫測試。

所以,如果你想有人查看數據,你會想寫一個控制器的測試。它可能會像testViewSingleItem(),你可能想要assertContains()一些你想要的數據。

寫完之後,應該失敗,那麼你就去編寫你的控制器方法,以便通過測試。

就是這樣。只需沖洗並重復每個用例。這是單元測試。其他諸如功能測試和集成測試等測試只是測試應用程序的不同方面。這取決於您對認爲決定哪些測試對您的項目有用。

大多數情況下,單元測試是您可以測試應用程序各個部分的方法。通常會影響功能的部分,即「關鍵路徑」。

這是一個令人難以置信的有用的TDD教程。 http://net.tutsplus.com/sessions/test-driven-php/

+0

我感謝您的時間和建議!該鏈接也很有幫助。不過,我仍然有興趣看到使用CakePHP進行TDD的深入演練。 – Nick 2013-05-03 04:07:22

+0

TDD和CakePHP之間沒有真正的「事物」。你只需要學習TDD理論,學習PHP單元,然後編寫一些測試。這本書在測試方面有很好的篇章。 http://book.cakephp.org/2.0/en/development/testing.html – 2013-05-07 11:05:27

+0

另請參閱CakePHP本身的源代碼。在['lib/Cake/Test'](https://github.com/cakephp/cakephp/tree/master/lib/Cake/Test/)目錄中,你會發現框架本身的所有單元測試。你可以使用這些作爲自己的測試的例子,例如,瞭解如何創建一個單元測試來測試控制器或模型 – thaJeztah 2013-05-07 21:25:53