2012-06-30 128 views
2

我是Grails初學者。並試圖瞭解單元測試.. 當我創建一個域類Author grails自動爲該域創建一個測試控制器AuthorControllerTests瞭解單元在Grails中測試

等等。在測試控制器中,第二行是@Mock(作者)

這是什麼意思..當我嘲笑一個域類時,我得到的優勢是什麼?

回答

1

,因爲它說,在extensive documentation on testing

素註釋創建的任何合作者的模擬版本。有一個GORM的內存中實現將模擬與GORM API的大多數交互。對於那些不會自動模擬的交互,您可以使用內置的支持來以編程方式定義模擬和存根。

另外AuthorControllerTests是作者控制器,而不是作者域類的測試。

+0

還是你的意思是說寫在作者域中的方法不能與此AuthorControllerTests類進行測試?我需要爲作者域類創建單獨的testClass? – monda

+1

你可以這樣做,但你可能有另一個使用Author的控制器,你是否也要在那裏測試域?如果您將它分開[並使用域測試測試您的域對象](http://grails.org/doc/latest/guide/testing.html#unitTestingDomains)和您的[帶有控制器測試的控制器](http:/ /grails.org/doc/latest/guide/testing.html#unitTestingControllers),你將避免重複自己,並獲得更容易找到的代碼 –

1

只需添加一些東西,當你需要隔離代碼的「單元」時,嘲笑就很有用,就像在這裏你的控制器一樣。

通過隔離,我們的意思是編寫簡單的組件來重新模擬和模擬所有的依賴關係。這個簡單的組件就是我們所說的Mocks。

Grails在這裏給你提供了模擬域類的可能性,它將使你的測試變得更容易,因爲它不會將信息存儲在數據庫中。

如果你想測試整個堆棧,從控制器到數據庫,這就是我們所說的集成測試。

希望它有助於