2011-02-24 43 views
3

我正在學習groovy/grails,並編寫我的第一個集成測試。Grails - 保存()在集成測試中與MissingMethodExcepition失敗

它目前與失敗:

groovy.lang.MissingMethodException:法無 簽名: com.mangofactory.scurry.User.save()是 適用於參數類型:() 值:[]

我的測試是沒有做任何幻想:

class UserEventControllerTests extends ControllerUnitTestCase { 
    protected void setUp() { 
     super.setUp() 
    } 

    protected void tearDown() { 
     super.tearDown() 
    } 

    void testAddingAUser() 
    { 
     def user = new User(emailAddress: "[email protected]") 
     user.save() 
    } 
} 

當我通過grails提供的腳手架頁面執行操作時,保存實體正常工作。

我錯過了什麼?

回答

3

如果你希望它是一個集成測試不應該延長單元測試的一個基類,所以將其更改爲

class UserEventControllerTests extends GroovyTestCase { 
... 
} 

,並確保它在測試/集成,沒有測試/單元。

但它看起來像你想測試一個控制器(它叫做UserEventControllerTests),它應該延伸ControllerUnitTestCase。如果是這種情況,那麼你應該做單元測試,但嘲笑域層(使用mockDomain等),因爲你想專注於控制器邏輯,而不是持久性。使用數據庫在適當的集成測試中測試域類。

這全部在文檔的第10章中描述:http://grails.org/doc/latest/