2012-01-24 14 views
2

Grailsのコントローラにajaxリクエストテストを設定するにはどうすればよいですか?Grails:統合Ajaxリクエストのテスト - xhr

私は通常、それを指定せずにparamsフィールドに到達するための方法を見つけることができませんでした私は

Controller 
... 
... 
if(params.event_id){ 
    //set values of the "event" object 
} 

if (request.xhr) { 

     def result = [eventTile: event.getAt(0).title, eventId: event.getAt(0).id] 

      render result as JSON 
      return 
     } 
... 
... 

を持っている私の「ランディングページ」アクション内

def homeController = new HomeController() 

    homeController.request.contentType = "text/json" 
    homeController.request.content = '{"event_id":2}'.getBytes() 
    homeController.request.xhr = true //error: can't be set 

    homeController.landingPage() 

を試してみました。

homeController.params.event_id = 2 

は、どのように私は、セットアップGrailsの統合テストでは、私のコントローラからJSONを返すでしょうとして真XHRを設定することができますか?

+0

になります'homeController.metaClass.getRequest = {[xhr:true]}' – Armand

答えて

2

多分私は正しい質問を得ていません。しかし、あなたはこの方法でリクエストを強制的にxhr要求とみなすことができることがわかりました。

def homeController = new HomeController() 

homeController.request.content = '{"event_id":2}'.getBytes() 
homeController.request.makeAjaxRequest() 
homeController.landingPage() 

返された値を使用すると、たとえばみましたGrailsMockHttpServletResponse

homeController.response.json == "" //Make your tets here 
関連する問題