我正在嘗試進入TDD領域,並且我正在測試一些用戶模型的困難時間單元。我想測試我的模型的驗證和業務要求如下:單元測試Dababase應用程序
- > = 6個字符的用戶名需要
- > = 5個字符的密碼,至少有1字母和數字
- 有效的電子郵件格式要求
- ...等等等等等等
- 用戶名和電子郵件不能在DB
所有要求是已經存在易於測試,除5之外,這要求數據庫處於已知狀態。我知道使用PHPUnit,我可以將我的數據庫設置爲使用XML文件的已知狀態,但有沒有更好的方法?
我想讓我的數據庫恢復到運行測試之前的狀態(即在開發過程中)。我想我可以使用MySQL事務來回滾這些更改,或者我想我也可以使用兩個單獨的數據庫,一個用於開發,一個用於測試。
我也讀過某處不使用單元測試中的實際數據庫連接,而是使用模擬數據。不太確定這是如何工作的。
有人可以向我解釋我擁有的不同選擇,哪些是最佳路線?
感謝
編輯:
我想我會去與Ruby on Rails的做法和剛剛成立3個獨立的數據庫,生產,開發和測試。除非有人強烈反對。
也許有點關係:http://stackoverflow.com/questions/5281418/using-mock-objects-in-php-inside-functions-that-instantiate-their-own-objects – edorian 2011-05-25 16:56:54