【发布时间】:2018-04-11 05:31:05
【问题描述】:
我正在使用 spock 框架为 spring 3 控制器类编写测试。尝试执行其中一项测试(GET 请求)时出现以下错误。请注意,同一类中的所有其他测试(POST 请求)都按预期工作。
控制器签名
@RequestMapping(value = "/{accountHolderId}/xyz", method = GET)
public @ResponseBody BaseResponse getHistoryByHolderId(
HttpServletRequest request,
@PathVariable String accountHolderId)
斯波克测试
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] 的名称不可用,并且在类文件中也找不到参数名称信息。
【问题讨论】:
-
控制器类和 spock 测试是什么样的?请更新您的问题并提供更多详细信息。
-
更新@SzymonStepniak
-
请注意,我也尝试将
@PathVariable("accountHolderId") String accountHolderId添加到控制器签名中,但没有成功
标签: spring testing controller spock