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