2013-01-10 63 views
0

在使用grails 2.x編寫測試用例時,我遇到了從I18n屬性文件中獲取消息的問題。如何使用grails 2.x單元測試從i18n消息屬性中獲取消息?

在控制器

我使用這樣的:

g.message(code:'upload.coverpage.file.isempty.msg') 
進入從控制器結果對象時

,該消息將在返回爲:

upload.coverpage.file.isempty.msg 

但原始消息是:

"Sorry, the file size is empty." 

如何獲取原始消息。 任何機構都有想法?

感謝&問候

arnagendla

+0

爲什麼g.message?您可以在控制器中使用消息(代碼:「...」)。 –

+0

@ Mr.Cat您在技術上不需要'g.'前綴,但我總是傾向於使用它(a)使任何人閱讀我希望它成爲taglib調用的代碼更清晰,並且(b)因爲名稱衝突的可能性。 (b)在webflow中特別痛苦,如果你在你的控制器中分配了'flash.message',那麼在你的GSP中調用'message(...)'停止工作(但是'g.message(...)仍然正常工作)。 –

回答

1

我認爲這是測試消息的正確途徑。我現在寫的應用程序測試,寫在Grails的1.3.5,並得到一個錯誤的控制器單元測試:

No signature of method: ChallengeListingController.message() 

我已經決定要解決這樣說:

ChallengeListingController.metaClass.message={def msg-> return msg.code} 

我確切地返回消息代碼:它足以作出該字符串是否正確的決定,當然您將代碼與值分開。

+0

嗨,貓先生,謝謝。但是,我需要使用此代碼的位置?在Controller或ControllerTests中? – arnagendla

+0

當然在測試。它動態地將消息方法添加到控制器。但這是針對Grails 1.3.5的。在你的測試中使用assertEquals('upload.coverpage.file.isempty.msg',mockFlash.message),並且返回消息代碼比值更合適 –