Java 如何在spock中编写Rest服务API的集成测试
我有一个包含API方法的Java类 例:Java 如何在spock中编写Rest服务API的集成测试,java,rest,spock,Java,Rest,Spock,我有一个包含API方法的Java类 例: 我想对该API进行正确的集成测试,即在测试时,我想使用路径调用此方法,但不使用方法名称查看他们网站上的Spring指南: 当您明确要求Spock时:以下是我对ApiSpec的标准实现: @SpringBootTest(webEnvironment = RANDOM_PORT) abstract class AbstractServiceSpec extends Specification { protected final static Res
我想对该API进行正确的集成测试,即在测试时,我想使用
路径
调用此方法,但不使用方法名称查看他们网站上的Spring指南:
当您明确要求Spock时:以下是我对
ApiSpec
的标准实现:
@SpringBootTest(webEnvironment = RANDOM_PORT)
abstract class AbstractServiceSpec extends Specification {
protected final static RestTestClient api = new RestTestClient()
@Value('http://localhost:${local.server.port}')
String serviceUrl
def setup() {
api.baseUrl = serviceUrl
}
def "GET /health should return 200"() {
expect:
api.get("/health").code() == 200
}
}
请注意,restestclient
是我自己对OkHttp的包装。当然,您可以使用手头的任何HTTP客户机
@SpringBootTest
注释使Spring启动整个服务。在执行测试时,服务已完全启动并运行,您可以对API进行黑盒测试
一般来说,这是一本很好的读物,正如您在示例中所看到的,大部分内容都可以在Spock和JUnit中完成。这对我很有用
import com.charter.aesd.testcommons.RESTSpecification
import groovyx.net.http.HttpResponseDecorator
class TestIT extends RESTSpecification{
def BASE_URL = "/test"
def "Get test"(){
when:
HttpResponseDecorator response = getRestClient().get([path:"$BASE_URL"+"/123"])
then:
response.status >=200 && response.status < 400
}
@Override
String getBaseUrl() {
return 'http://localhost:8889/'
}
}
import com.charter.aesd.testcommons.rest规范
导入groovyx.net.http.HttpResponseDecorator
类TestIT扩展了rest规范{
def BASE_URL=“/test”
def“获取测试”(){
什么时候:
HttpResponseDecorator response=getRestClient().get([path:$BASE_URL“+”/123“]))
然后:
response.status>=200&&response.status<400
}
@凌驾
字符串getBaseUrl(){
返回'http://localhost:8889/'
}
}
请提供一个完全可复制的测试用例(),以便获得有关StackOverflow的帮助。请至少展示一个完整的Spock测试和测试中涉及的所有类的源代码。旁白:你的无保留问题真是太多了。无意冒犯,我想帮助你,我相信其他人也一样。但是根据“垃圾输入,垃圾输出”的原则,写得不好的问题你不会得到任何好的答案。欢迎来到这里,乔纳斯。请注意,主要由链接组成的答案在这里不被认为是正确的。一个好的答案应该真正解决原始海报的问题,并解释如何以及为什么。链接很好,但仅用于进一步的信息。
import com.charter.aesd.testcommons.RESTSpecification
import groovyx.net.http.HttpResponseDecorator
class TestIT extends RESTSpecification{
def BASE_URL = "/test"
def "Get test"(){
when:
HttpResponseDecorator response = getRestClient().get([path:"$BASE_URL"+"/123"])
then:
response.status >=200 && response.status < 400
}
@Override
String getBaseUrl() {
return 'http://localhost:8889/'
}
}