我在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 {...}
是带有两个参数的方法调用:method
和url
。这是对的吗? Idea指向类WireMock
的静态方法,但我对此表示怀疑,因为指向型方法具有名为urlPattern
的第二个参数,而不仅仅是url
。然后我们看到与response
类似的东西。 Idea根本无法识别它,因此没有任何提示,没有语法检查等。
因此,有两个主要问题:-这是什么语法?-如何使想法理解?
stub {...}是一个以lambda作为参数的方法调用。
正确,但是{...}
是闭包,而不是lambda。
request {...}是带有两个参数的方法调用:method和url。正确吗?
否,method
和url
都是方法调用。为了清楚起见,在Groovy中可以省略括号,因此对于Java开发人员来说,该块可以重写为:
request( {
method( "GET" )
url( "/some/thing" )
} )
或
request(){
...
}
[Groovy DSL支持使整个事情成为可能,在编译期间可能无法始终正确地将它们识别为IDE,但是仍然可以平稳运行。