2012-07-30 48 views
1

我有檢查的條件,並根據條件的結果的控制器動作,將一個字段設置爲會話變量在控制器斷言會話變量集 - Grails的測試用例

控制器:

def checkUser={ 
    if(condition: true){ 
     session.user = id 
    }else{ 
     session.user=null 
    } 
} 

現在,在我的測試用例中,如果我必須斷言此會話的用戶值,我該如何做?

我試了一下這樣的,但它沒有工作:

void testSomething(){ 
    controller.checkUser() 
    assertNull(session.user) 
} 

如何斷言這是在控制器被設置會話變量任何想法?

+0

斷言在默認情況下在Java中沒有啓用。您需要使用-ea(或)-enableassertion參數明確啓用它們。 – kosa 2012-07-30 21:19:11

+0

我沒有嘗試過這個,但是當訪問params時,我知道你可以做controller.params。如果你做assertNull(controller.session.user),會發生什麼? – Gregg 2012-07-30 23:44:06

+0

conroller.session.user不起作用。它拋出異常 – Npa 2012-07-31 13:42:10

回答

0

確保您的測試類擴展ControllerUnitTestCase或正在使用測試Mixin。

CUTC提供了幾種模擬方法來方便控制器測試。這裏是你會做什麼:

void testSomething(){ 
    controller.checkUser() 
    assertNull(mockSession.user) 
} 
+0

使用mockSession工作。感謝你的回答 – Npa 2012-07-31 13:42:45