RestAssured:发布请求返回500服务器错误

时间:2018-12-17 07:59:12

标签: java jenkins rest-assured

我使用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)

1 个答案:

答案 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