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

使用@WithMockUser的参数化Spock测试

郭子航
2023-03-14

我希望在Spock中使用@WithMockUser运行一个参数化测试,每个迭代都有不同的角色。

作为一个示例,下面的测试代码没有显示编译错误,并且运行两次。但是结果失败了,因为#role只在@unroll中解析,而不在@WithMockUser注释中解析。

    @Unroll("#role is authorized to get admin")
    @WithMockUser(username = "user", roles = ["#role"])
    def "User is authorized to get admin"() {
        when:
        def adminDto = adminController.getAdmin()

        then:
        adminDto.getStatusCode() == HttpStatus.OK

        where:
        role << ["USER", "ADMIN"]
    }

所以我的问题是:有可能运行这样一个参数化的测试吗?

@WithMockUser(username = "user", roles = ["USER", "ADMIN"])

共有1个答案

梁巴英
2023-03-14

简短的回答不。

注释是在编译时静态编译的,Spock不能修改,迭代是在运行时动态生成/计算的。@unroll注释对数据变量有一些特殊的支持,以使其工作,而Spring注释对Spock一无所知。

您可以查看WithMockUserSecurityContextFactory,并使用它手动设置givid块中的SecurityContext

 类似资料:
  • 我想用groovy和Spock测试这个类:

  • 使用Robolectric的参数化测试 原文链接 : Parameterized testing with Robolectric 译文出自 : 开发技术前线 www.devtf.cn 译者 : Lollypo 校对者: Chaos 状态 : 校对完成 在目前的项目中我们使用Robolectric为Android应用程序编写单元测试,它一直都干的不错。最近我需要编写一个测试用例,通过每次使用不同的

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

  • 下面是这个问题:我被要求从哪里开始一个新问题。 问题是我对JUnit了解不够,或者对等的了解不够,无法以Jeff Bowman提到的方式解决这个问题。

  • 如何使用Spock以良好的方式(例如数据表)测试异常? 示例:具有一个方法,该方法可以抛出不同消息的异常,或者如果用户有效,则不抛出异常。 规范类本身: 变体1 这一个正在运行,但真正的意图被所有的when/then标签和反复调用弄得一团糟。 变式2 这个不工作,因为Spock在编译时提出了这个错误: 异常条件只允许在'然后'块 变式3 这个不工作,因为Spock在编译时提出了这个错误: 异常条件