2011-07-25 9 views
0

コントローラのの概要の概要をしようとしていますが、動作しません。GrailsでmetaClassを使ってアクションを擬似しました

私はこの方法を試してみました:

MyController.metaClass.overview = { -> 
     println "MOCKED OVERVIEW" 
     render(view:"overview", model) 
    } 

MyController.metaClass.demand.overview = { -> 
     println "MOCKED OVERVIEW" 
     render(view:"overview", model) 
    } 

MyController.metaClass.static.overview = { -> 
     println "MOCKED OVERVIEW" 
     render(view:"overview", model) 
    } 

このすべてが動作しませんでした。

しかし、いくつかのサービスを模擬するために.metaClassを使用していました。

このアクションが機能しないのはなぜですか?

printlnステートメントは表示されません。

+1

なぜこれをやっていますか?なぜhttp://www.grails.org/Testing+Controllersに掲載されているのでしょうか?私はちょうど興味があった... – hvgotcodes

+0

私はサービスを嘲笑することが私が期待していたことをしていなかったので、私は行動を嘲笑しようとしていた。 しかし、私はそのエラーを参照してください。私はアクションが使用するサービスを嘲笑しただけです。 アクションは実際に正しく動作するはずです。 –

答えて

1

URLとすべてのSpring Beanを生成するために、Grailsのブートストラップ時にアクションが必要です。アプリケーションを初期化した後は、簡単にオーバーライドすることはできません。

とにかく、あなたはする必要はありません - 行動は単純でなければなりません。テスト可能なロジックはすべてテスト可能でなければなりません。

関連する問題