我使用RestAssured练习Web服务。在发布请求中,它返回500服务器错误,其中我使用邮递员发送请求,并且没有错误。 谁能帮我调试错误?请给我一些意见。有什么帮助吗?提前致谢。
@BeforeSuite
public void setup() {
RestAssured.reset();
ProxySpecification ps = new ProxySpecification("localhost", 8080, "http");
RestAssured.proxy(ps);
RestAssured.baseURI = "https://jsonplaceholder.typicode.com/";
RestAssured.port = 443;
}
@Test(groups="createUser")
public void createUser() {
given()
.param("userId", 1234)
.param("id", 82342)
.param("title", "Senior Software Engineer")
.param("body", "Scrum Org").
when()
.request("POST", "/posts").
then()
.statusCode(200);
}
错误消息是预期的状态代码<200>,但为<500>。
Stacktrace:
在sun.reflect.NativeConstructorAccessorImpl.newInstance0(Native 方法) sun.reflect.NativeConstructorAccessorImpl.newInstance(未知来源) 在sun.reflect.DelegatingConstructorAccessorImpl.newInstance(未知 源)位于java.lang.reflect.Constructor.newInstance(未知源) 在 org.codehaus.groovy.reflection.CachedConstructor.invoke(CachedConstructor.java:83) 在 org.codehaus.groovy.reflection.CachedConstructor.doConstructorInvoke(CachedConstructor.java:77) 在 org.codehaus.groovy.runtime.callsite.ConstructorSite $ ConstructorSiteNoUnwrap.callConstructor(ConstructorSite.java:84) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallConstructor(CallSiteArray.java:59) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:238) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callConstructor(AbstractCallSite.java:250) 在 io.restassured.internal.ResponseSpecificationImpl $ HamcrestAssertionClosure.validate(ResponseSpecificationImpl.groovy:483) 在 io.restassured.internal.ResponseSpecificationImpl $ HamcrestAssertionClosure $ validate $ 1.call(未知 来源) org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCall(CallSiteArray.java:47) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:116) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.call(AbstractCallSite.java:128) 在 io.restassured.internal.ResponseSpecificationImpl.validateResponseIfRequired(ResponseSpecificationImpl.groovy:655) 在sun.reflect.NativeMethodAccessorImpl.invoke0(本机方法)处 sun.reflect.NativeMethodAccessorImpl.invoke(未知来源)位于 sun.reflect.DelegatingMethodAccessorImpl.invoke(未知源)位于 java.lang.reflect.Method.invoke(来源未知) org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite $ PogoCachedMethodSiteNoUnwrapNoCoerce.invoke(PogoMetaMethodSite.java:210) 在 org.codehaus.groovy.runtime.callsite.PogoMetaMethodSite.callCurrent(PogoMetaMethodSite.java:59) 在 org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:169) 在 io.restassured.internal.ResponseSpecificationImpl.statusCode(ResponseSpecificationImpl.groovy:123) 在 io.restassured.specification.ResponseSpecification $ statusCode $ 0.callCurrent(未知 来源) org.codehaus.groovy.runtime.callsite.CallSiteArray.defaultCallCurrent(CallSiteArray.java:51) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:157) 在 org.codehaus.groovy.runtime.callsite.AbstractCallSite.callCurrent(AbstractCallSite.java:169) 在 io.restassured.internal.ResponseSpecificationImpl.statusCode(ResponseSpecificationImpl.groovy:131) 在 io.restassured.internal.ValidatableResponseOptionsImpl.statusCode(ValidatableResponseOptionsImpl.java:119) 在com.peterwkc.services.Main.createUser(Main.java:75)
答案 0 :(得分:1)
您必须发送JSON正文而不是参数。然后您的请求将如下所示:
given()
.contentType(ContentType.JSON)
.body("{"
+ "\"userId\": 1234,"
+ "\"id\": 823823,"
+ "\"title\": \"Title\","
+ "\"body\": \"Scrum\""
+ "}"
)
.when()
.request("POST", "/posts").
then()
.statusCode(201);
这里有一个官方Wiki页面,其中包含许多有用的示例: https://github.com/rest-assured/rest-assured/wiki