java - 如何通过测试解决 API 调用上的错误代码 "405"?

标签 java maven api testing rest-assured

我在 IntelliJ 中的运行模式下测试 API 调用时收到错误代码“405”。然而,当我测试 API cal 时;在 Postman 中使用相同的参数即可工作。

我正在编写一个点唱机,用户必须登录才能使用它。登录表单有效,当我尝试使用 Postman 登录时,它也登录成功。但是,当我在 IntelliJ 上运行代码时,它给出错误代码“405”,这意味着“方法不允许”。

我的 userController 类代码有效:

@PostMapping(value = "/login", consumes = MediaType.APPLICATION_FORM_URLENCODED_VALUE)
public String login(@RequestBody MultiValueMap<String, String> body){
    String email = body.getFirst("email");
    String username = body.getFirst("username");
    String password = body.getFirst("password");

    return userService.loginUser(email, username, password);
}

我的功能测试代码(也有效,因为我的 API 测试中的其他 GET 方法有效):
公共(public)类功能测试{

@BeforeClass
public static void setup() {
    String port = System.getProperty("server.port");
    if (port == null) {
        RestAssured.port = Integer.valueOf(8080);
    }
    else{
        RestAssured.port = Integer.valueOf(port);
    }


    String basePath = System.getProperty("server.base");
    if(basePath==null){
        basePath = "/";
    }
    RestAssured.basePath = basePath;

    String baseHost = System.getProperty("server.host");
    if(baseHost==null){
        baseHost = "http://localhost";
    }
    RestAssured.baseURI = baseHost;
}
} 

最后是我的用于测试登录 POST 方法的代码:

//User control
@Test
public void checkLogin(){

    given()
            .param("email", "123")
            .param("username", "123")
            .param("password", "123")
            .when()
            .get("/login")
            .then()
            .statusCode(200);
}

希望有人能帮我解决这个问题。

提前致谢!

最佳答案

405 表示方法不允许。发生这种情况是因为您公开了 POST 操作 (@PostMapping(value = "/login", Consumers = MediaType.APPLICATION_FORM_URLENCODED_VALUE) 但尝试通过 GET:.when().get("/login")

关于java - 如何通过测试解决 API 调用上的错误代码 "405"?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54128148/

相关文章:

java - 如何在 GWT 中创建 iframe JAVASCRIPT 到 JAVA?

java - 切换到 JPA,现在我总是在任何插入时得到 TransactionRequiredException

maven - Camel Spring Boot Maven到Gradle

ios - 同步 iOS 设备和索尼运动相机 HDR-AS200V。获取完整的有声电影

python - 如何修复 Twitter 30 天沙盒搜索上的错误代码 403?

java - SAP 混合动力系统 [Y] : How to create a custom interceptor

Java 国际象棋小程序

java - 排除 SonarQube 4.3 上的模块

java - Eclipse 中的 SVN 项目,带有棕色部分

javascript - jQuery AJAX 调用 Vanilla JS,我错过了什么?