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 {...}
是一个带有两个参数的方法调用:method
和 url
。这是正确的吗?想法指向 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?
不是,method
和url
都是方法调用。为清楚起见,可以省略 Groovy 中的括号,因此对于 java 开发人员,该块可以重写为:
request( {
method( "GET" )
url( "/some/thing" )
} )
或
request(){
...
}
Groovy DSL 支持使整个事情成为可能,它在编译时可能并不总是被正确识别为 IDE,但仍然运行平稳。
我在 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
。这是正确的吗?想法指向 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?
不是,method
和url
都是方法调用。为清楚起见,可以省略 Groovy 中的括号,因此对于 java 开发人员,该块可以重写为:
request( {
method( "GET" )
url( "/some/thing" )
} )
或
request(){
...
}
Groovy DSL 支持使整个事情成为可能,它在编译时可能并不总是被正确识别为 IDE,但仍然运行平稳。