当前位置: 首页 > 知识库问答 >
问题:

使用spock测试错误的Mockmvc

俞子实
2023-03-14

我正在使用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)
    }

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

共有1个答案

长孙淳
2023-03-14

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

 类似资料:
  • 我正在尝试使用Spock运行geb测试。我已经在groovy脚本中编写了所有内容,该脚本位于中,如下所示

  • 在我的应用程序中有,它有一个操作,如下所示: 现在,我正在测试视图和模型,如下所示: 但是我的测试用例失败了,stacktrace如下: 正在运行2个spock测试。。。第1页,共2页 有什么问题吗。

  • 我希望在Spock中使用@WithMockUser运行一个参数化测试,每个迭代都有不同的角色。 作为一个示例,下面的测试代码没有显示编译错误,并且运行两次。但是结果失败了,因为#role只在@unroll中解析,而不在@WithMockUser注释中解析。 所以我的问题是:有可能运行这样一个参数化的测试吗?

  • 我无法使用安全性配置我的Spring Boot服务器的“自测”。这意味着我使用本教程创建了一个自签名证书。当我从浏览器打开https://localhost:8080时,没有问题,我有一个安全的加密连接。 但是,当我想要设置一个REST模板来调用https://localhost:8080时,我得到了这个错误: 测试类和项目:https://github.com/mpawel1993/family

  • 当我尝试使用以下方法创建功能测试时: 我得到了这个错误,因为Spock试图使用错误的Groovy版本: 编译GenerateAsyncController.Groovy时出错:启动失败:无法实例化在jar中指定的全局转换类org.spockframework.compiler.spockTransform:file://users/reinaldoluckman/.gradle/caches/mo

  • 我刚刚将一个现有的应用程序从Grails 2.2.4升级到2.3.0。从那以后,所有的spock集成测试都被打破了。我得到的错误消息如下所示。运行单元测试或run-app没有问题。谢谢预付费的任何建议。