Mockmvc使用spock测试错误

时间:2018-04-11 05:31:06

标签: spring testing controller spock

我正在使用spock框架为spring 3控制器类编写测试。尝试执行其中一个测试(GET请求)时出现以下错误。请注意,同一个类中的所有其他测试(POST请求)都按预期工作。

控制器签名

@RequestMapping(value = "/{accountHolderId}/xyz", method = GET)
public @ResponseBody BaseResponse getHistoryByHolderId(
        HttpServletRequest request,
        @PathVariable String accountHolderId)

Spock测试

def "GetHistoryByHolderId"() {

        def accountHolderId = 'x@y.com'

        when: 'an http call is performed to get fund transfer history by accountHolderId'
        def response = mockMvc.perform(
                get('/{accountHolderId}/xyz',accountHolderId))
                .andExpect(status().isOk())
                .andReturn().response

        def result = new JsonSlurper().parseText(response.contentAsString)
    }
  

org.springframework.web.util.NestedServletException:请求处理失败;嵌套异常是java.lang.IllegalArgumentException:参数类型的名称[java.lang.String]不可用,参数名称信息也没有在类文件中找到。

1 个答案:

答案 0 :(得分:0)

解决了这个问题。原因是我正在监视控制器类,即方法目标是在Spock代理类上(而不是代理原始方法),并且spring无法正确读取注释。因此,它没有识别路径变量和请求参数。