POST返回状态码400,并在集成测试中放心

时间:2019-06-02 14:52:42

标签: json post integration-testing rest-assured http-status-code-400

我尝试发送POST请求以进行集成测试,请放心,因为我不断收到400错误。 (Expected status code <200> but was <400>.

这是我的模特:

import things

@Entity
@Table(name="CATEGORIES")
@Data
public class Category implements Serializable {

    private static final long serialVersionUID = -8677180318520117547L;

    @Id
    @GeneratedValue(strategy=GenerationType.IDENTITY)
    @Column(name="CATEGORY_ID")
    private Long id;

    @Column(name="NAME")
    @NotNull
    private String name;

    @Column(name="PARENT")
    private Long parentId;

}

我为测试数据库提供了load_sample.sql

INSERT INTO CATEGORIES (NAME) VALUES ('Vehicule');
INSERT INTO CATEGORIES (NAME, PARENT) VALUES ('Bike'  , 1);
INSERT INTO CATEGORIES (NAME, PARENT) VALUES ('Car', 1);

GET方法可以正常工作。

这是我的POST测试方法,请放心使用:

@Test //POST
public void step4testCreate() {

    JSONObject jsonObj = new JSONObject()
                             .put("id",4)
                             .put("name","Train")
                             .put("parentId",1);

    given().
        log().all().
        contentType("application/json\r\n").
        body(jsonObj.toString()).
    when().
        post("/").
    then().
        log().all().
        assertThat().
        statusCode(200);
}

使用此方法会出现400错误。 这是日志:

Request method: POST
Request URI:    http://localhost:28080/category/
Proxy:                  <none>
Request params: <none>
Query params:   <none>
Form params:    <none>
Path params:    <none>
Headers:                Accept=*/*
                                Content-Type=application/json
; charset=UTF-8
Cookies:                <none>
Multiparts:             <none>
Body:
{
    "name": "Train",
    "id": 4,
    "parentId": 1
}
HTTP/1.1 400 Bad Request
Content-Length: 0
Connection: close

我发现主体中的JSON确实是正确的,所以我不知道错误是从哪里来的。

感谢您的帮助!

0 个答案:

没有答案