2010-09-06 134 views
1

我正在嘗試編寫一個簡單的集成測試,但在域對象方面遇到了一些麻煩。我已閱讀unit testing,但無法弄清楚。Grails集成測試:遇到問題

這是我簡單的測試:

User user = User.get(1) 

    controller.params.userid = "1" 
    controller.session.user = user 

    controller.save(); 

的錯誤信息是:

groovy.lang.MissingMethodException:法無 簽名:靜態 com.baufest.insside.user。 User.get()是 適用於參數類型: (java.lang.Integer)值:1

我的猜測是我應該嘲笑user對象,但不知道如何。

回答

2

你說你是集成測試,但看起來你是單元測試。測試/整合或測試/單元?單元測試需要模擬,但是集成測試具有初始化的Spring應用程序上下文和Hibernate,並針對內存數據庫運行。

這在用戶指南中介紹,該用戶指南在http://grails.org/doc/latest/(您引用較舊的1.1版本)。

嘲笑User類,只需要調用mockDomain與無論是在設置或在測試方法中的一個或多個測試實例:

def users = [new User(...), new User(...), ...] 
mockDomain User, users 

... 

User user = User.get(1) 
+0

及其下IntegrationTests。我想要做的是測試一個控制器,它從save()方法中的會話中檢索用戶對象。 – Tom 2010-09-06 17:18:28

+0

你可以在測試中插入更多代碼嗎? – 2010-09-06 20:34:48

+1

除非你做一些有趣的事情,否則你不應該得到一個缺失的方法異常。你在擴展GroovyTestCase嗎?集成測試應該,但單元測試會擴展像ControllerUnitTestCase這樣的Grails單元測試類之一。 – 2010-09-06 21:45:27