【发布时间】:2021-03-28 09:58:14
【问题描述】:
当我使用 RestController 运行我的 Spring Boot 应用程序的 rest-assure 测试时,我收到以下错误消息:
java.lang.AssertionError: 1 expectation failed.
Expected status code <201> but was <400>
我的控制器是这样的
package org.steinko.restapi;
import org.springframework.web.bind.annotation.PostMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.GetMapping;
@RestController
public class MessageController {
@PostMapping("/message")
public Message newMessage( @RequestBody Message aMessage) {
return aMessage ;
}
@GetMapping("/message")
public Message getMessage( ) {
return new Message("get message");
}
}
消息类看起来像这样 包 org.steinko.restapi;
public class Message {
private String message;
public Message (String aMessage) {
message = aMessage;
}
public String getMessage() {
return message;
}
public void setMessage(String message) {
this.message = message;
}
}
rest-assure API 测试如下所示
package tutorial;
import org.junit.jupiter.api.Test;
import static io.restassured.RestAssured.given;
import io.restassured.RestAssured;
import static org.hamcrest.Matchers.equalTo;
public class MessageTest {
@Test
public void shouldStoreMessage() {
String url = "http://localhost:8080/message";
Message message = new Message("message");
given()
.contentType("application/json")
.body(message)
.when()
.post(url)
.then()
.statusCode(201);
}
如何解决这个错误?
【问题讨论】:
-
您在测试中添加到正文中的
message是否已序列化? 400 是错误请求,所以那里有问题。 -
您使用的端口号是否正确?并且在两个地方使用相同的路径值并不是一个好主意。反正只要检查端口号。
标签: java json spring-boot rest rest-assured