我尝试发送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确实是正确的,所以我不知道错误是从哪里来的。
感谢您的帮助!