0

このマッピングを考えると:

"/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"
            }
        }
    }
}
4

1 に答える 1

1

カスタム マッピング クラスを追加するだけです。

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'
      }
  }

}
于 2013-10-09T16:28:36.757 に答える