2011-11-21 55 views
3

我有一個針對我的UserController的單元測試,但自從升級到Grails 2.0後,flash變量總是返回一個沒有消息的靜態映射。Grails 2.0:發佈測試flash.message

這裏有UserControllerTests的一些代碼片段:

@TestFor(UserController) 
@Mock(User) 
class UserControllerTests { 
... 
    void testSaveSucceeds() { 
    params.userName = 'Joe' 
    ... 
    controller.save() 
    assert null != flash.message 
    assert '/user/list' == response.redirectedUrl 
    } 
} 

UserController

def save = { 
    def userInstance = new User(params) 
    if (userInstance.validate()) { 
    flash.message = message(code: 'default.created.message', args: [userInstance.userName ]) 
    ... 
} 

但我的測試結果如下:

assert null != flash.message 
      | |  | 
      | [:] null 
      false 

我曾嘗試爲整合測試以及因爲否則response爲weill,但沒有解決閃存問題。 viewmodel也存在同樣的問題。

我錯過了什麼?任何幫助高度讚賞。

問候

喬納斯

編輯:

這裏有一個奇怪的場景:

我的控制器有以下幾點:

def test = { 
    flash.message = "Message" 
} 

def save = { 
    flash.message = "Message" 
} 

我的測試看起來像這樣:

void testSaveSucceeds() { 
    controller.save() 
    println ">>> ${flash}" 
    controller.test() 
    println ">>> ${flash}" 
} 

這樣的輸出:

>>> [:] 
>>> [message:Message] 

有趣提也是在的IntelliJ調試器在斷點測試()作用,但不能在保存()

如何停止那可以嗎?

問候

喬納斯

+0

它使用grails 1.3.7嗎? – fixitagain

回答

1

對我來說意味着userInstance.validate()回報false即驗證失敗。

+0

這不是原因,驗證不會失敗。即使我給else塊中的flash.message分配一條消息,也會遇到同樣的問題。 – Jonas

+0

你在使用腳手架嗎? – fixitagain