2015-10-19 37 views
0

按照用戶請求保存操作的行爲是,它會重定向到從選擇的創建操作任何網頁。Grails的3.0.9和蓋布測試空請求對象

在這種情況下是引薦。

的問題是,當我嘗試運行GEB測試來測試此功能,重定向不會發生,當我看的requestReferer()在創業板測試值,它是null,和request值在創業板測試也是null

// Controller's save action 
@Transactional 
def save() { 
    def baseUrl = baseUrl() 

    params.createdBy = currentUser() 
    params.contactEmail = userEmail() 

    Item item = new Item(params) 

    if (params.group) { 
     itemService.bindItemPropertyData(item, params) 
    } 

    if (!item.validate()) { 
     if (item.isSpecialConstraintViolation()) { 
      def duplicatedItemUrl = itemAssetService.getDuplicatedItemUrl(item.source, baseUrl) 

      render view: 'create', model: [ item : item, 
              map    : getListsForView(), 
              duplicatedSource: duplicatedAssetUrl, 
              referer   : params.referer, 
              params   : params ] 
     } else { 
      render view: 'create', model: [ item: item, 
              map   : getListsForView(), 
              referer  : params.referer, 
              params  : params ] 
     } 
    } else { 
     if (params.referer) { 
      item.save(flush: true) 
      redirect(uri: params.referer) 
     } else { 
      item.save(flush: true) 
      redirect(action: "show", id: item.id) 
     } 
    } 
} 

// requestReferer() method in controller 
private String requestReferer() { 
    return request.getHeader("referer") 
} 

// Geb login method 
def logIn() { 
    $("form").username = "user" 
    $("form").password = "password" 
    $("button").click() 
} 

// geb test in question 
def "test creating an item"() { 
    when: "logging in and creating an item" 
     go '/' 
     logIn() 
     go '/item/create' 
     $("form").name = "Item One" 
     $("form").source = "Item One" 
     $("button").click() 

    then: "item was saved" 
     $("title").text() == "Item Index" 
} 

回答

0

問題的原因是,在沒有被通過鏈接的點擊請求創建操作測試,這引起了請求頭不進行設置。

的解決方案是實際點擊頁面上的創建鏈接,使這一變化通過測試後。