wiremock-groovy 库语法

wiremock-groovy library syntax

我在 Spock 测试中将库 https://github.com/tomjankes/wiremock-groovy 用于 WireMock。 我最担心的是 Intellij Idea 不理解语法,我也是。

文档中的示例:

    wireMockStub.stub {
        request {
            method "GET"
            url "/some/thing"
        }
        response {
            status 200
            body "Some body"
            headers {
                "Content-Type" "text/plain"
            }
        }
    }

据我了解,stub { ... } 是一个以 lambda 作为参数的方法调用。没关系,更进一步。 request {...} 是一个带有两个参数的方法调用:methodurl。这是正确的吗?想法指向 class WireMock 的静态方法,但我对此表示怀疑,因为指向的方法具有名为 urlPattern 的第二个参数,而不仅仅是 url。 然后我们看到与 response 类似的东西。 Idea根本不识别,所以没有提示,没有语法检查等等。

所以,有两个主要问题: - 这是什么语法? - 如何强制idea理解?

stub { ... } is a method call with lambda as an argument.

正确,但是 {...} 是闭包,而不是 lambda。

request {...} is a method call with two arguments: method and url. Is it correct?

不是,methodurl都是方法调用。为清楚起见,可以省略 Groovy 中的括号,因此对于 java 开发人员,该块可以重写为:

        request( {
            method( "GET" )
            url( "/some/thing" )
        } )

        request(){
          ...
        }

Groovy DSL 支持使整个事情成为可能,它在编译时可能并不总是被正确识别为 IDE,但仍然运行平稳。