unit-testing - Grails UrlMappings Spock测试

标签 unit-testing grails groovy

我在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")
    }

}

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

Compilation error compiling [unit] tests: BUG! exception in phase 'instruction selection' in source unit 'C:\websites********\test\unit\com\vega\foo\UrlMappingsSpec.groovy' unexpected NullpointerException



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

最佳答案

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

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

  • $id添加到URL映射。
  • 从测试中删除import org.codehaus.groovy.grails.web.mapping.UrlMappings
  • controller中显式指定actionUrlMapping
  • 关于unit-testing - Grails UrlMappings Spock测试,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27974432/

    相关文章:

    javascript - 使用 Angular 服务 + Jasmine 进行 uni 测试 404 故障响应

    java - 如何在私有(private)静态方法中模拟第三方类?

    java - 无法通过在 Grails 中使用 REST Web 服务来下载 pdf 文件

    groovy - 为什么这个 Groovy 代码试图强制转换?

    asp.net-mvc - 模拟 Asp.net-mvc Controller 上下文

    unit-testing - 如何使用 JEST 框架模拟 chrome API?

    mysql - chalice : not fetching/listing data from database

    tomcat - Grails 应用程序 Tomcat 或 VMware vFabric

    java - 将 HTTP post 从 ruby​​ 转换为 java 或 groovy

    ssl - 在 Ratpack 中,如何配置从外部文件加载配置?