POST возвращает код состояния 400 с гарантией на интеграционное тестирование - PullRequest
0 голосов
/ 02 июня 2019

Я пытаюсь отправить 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 в теле действительно корректен, поэтому я не знаю, откуда возникла ошибка ..

Спасибо за помощь!

...