我在UrlMappings.groovy中定义了一个基本映射。如果运行我的应用程序并转到/ api / address / zip-code / 12345,我将得到show Action 来响应浏览器的请求。

group("/api/address"){
    "/zip-code"( resources: 'zipCode', includes: ['show'] )
}

我试图创建一个测试来验证我的映射是否有效,因为我将在此处创建大量映射,并且希望它们得到测试的支持。这是我的考验。
package com.vega.foo

import com.vega.foo.address.ZipCodeController
import grails.test.mixin.Mock
import grails.test.mixin.TestFor
import spock.lang.Specification
import org.codehaus.groovy.grails.web.mapping.UrlMappings

@TestFor(UrlMappings)
@Mock(ZipCodeController)
class UrlMappingsSpec extends Specification {

    void "test zip code mapping"() {
        expect:
        assertForwardUrlMapping("/api/address/zip-code/12345", controller: 'zipCode', action: "show")
    }

}

当我尝试运行此测试时,出现以下错误。



这与您可以编写的URL映射测试一样基本。我在这里想念什么?

最佳答案

PR. This is how I was able to pass unit spec.

更改几乎是我在评论中所做的。

  • $id添加到URL映射。
  • 从测试中删除import org.codehaus.groovy.grails.web.mapping.UrlMappings
  • controller中显式指定actionUrlMapping
  • 10-06 03:16