【问题标题】:Why do I get a 400 status in this post command?为什么我在这个 post 命令中得到 400 状态?
【发布时间】: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


【解决方案1】:

添加

    implementation 'com.fasterxml.jackson.core:jackson-databind:2.12.0'
    implementation 'com.fasterxml.jackson.core:jackson-annotations:2.12.0'
    implementation 'com.fasterxml.jackson.core:jackson-core:2.12.0'
    implementation 'com.google.code.gson:gson:2.8.6'

到 gradle 中的依赖这修复了错误

【讨论】:

    猜你喜欢
    • 2010-11-09
    • 2020-07-23
    • 2013-04-29
    • 2023-01-12
    • 1970-01-01
    • 2019-10-08
    • 2021-04-11
    • 1970-01-01
    • 2017-09-18
    相关资源
    最近更新 更多