簡體   English   中英

grails測試網址參數

[英]grails test url parameters

給定此映射:

"/student/degree/$studentid/$degreecode"(controller:'student', action:'degree')

我正在嘗試下面的測試,但都失敗,並出現AssertionFailedError: '...did not match any mapping'並且兩者都是有效的URL。 我可以使用僅'/ student / degree'的測試URL來成功,我認為它會失敗,因為需要這些參數。

似乎assertURL方法沒有處理多個參數。 這僅適用於“ id”,並且無法為這些URL創建測試嗎?

@TestFor(UrlMappings)
@Mock([StudentController])
class UrlMappingsTests {
    void testUrlMappings() {
        assertForwardUrlMapping("/student/degree/102345678/N", controller: "student", action: "degree") {
            assertForwardUrlMapping("/student/degree/102345678/N", controller: "student", action: "degree") {
                studentid = 102345678
                degreecode = "N"
            }
        }
    }
}

經過Grails 2.2.4的測試,它對我有用,我只添加了一個自定義映射類:

package test

class MyUrlMappings {
  static mappings = {
    "/test/show/$myId/$myVal"(controller: "test", action: "show")
  }
}

import spock.lang.*
import test.MyUrlMappings

@TestFor(MyUrlMappings)
@Mock([TestController])
//I'm using Spock
class MyUrlMappingsSpec extends Specification {

  void "mapping should consider myId and myVal"() {
    expect:
      assertForwardUrlMapping("/test/show/1/tst", controller: "test", action: "show") {
        //all params considered as String
        myId = '1'
        myVal = 'tst'
      }
  }

}

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM