spring boot controller 单元测试

package com.example.demo;


import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.get;
import static org.springframework.test.web.servlet.request.MockMvcRequestBuilders.post;
import static org.springframework.test.web.servlet.result.MockMvcResultMatchers.status;
import org.junit.Before;
import org.junit.Test;
import org.junit.runner.RunWith;
import org.springframework.beans.factory.annotation.Autowired;
import org.springframework.boot.test.context.SpringBootTest;
import org.springframework.test.context.junit4.SpringRunner;
import org.springframework.test.web.servlet.MockMvc;
import org.springframework.test.web.servlet.MvcResult;
import org.springframework.test.web.servlet.setup.MockMvcBuilders;
import org.springframework.util.LinkedMultiValueMap;
import org.springframework.util.MultiValueMap;
import org.springframework.web.context.WebApplicationContext;


@RunWith(SpringRunner.class)
@SpringBootTest
public class DemoApplicationTests {



    @Autowired
    private WebApplicationContext context;

    private MockMvc mockMvc;



    @Before
    public void setupMockMvc() {
        mockMvc = MockMvcBuilders.webAppContextSetup(context).build();
    }

    @Test
    public void contextLoads() throws Exception {
        MultiValueMap<String, String> params = new LinkedMultiValueMap<String, String>();
//        params.add("id", "10");

        postTest(params,"/as");
    }


    /**
     * get 请求方式
     * @param params
     * @param path
     * @return
     * @throws Exception
     */
    public  Object getTest(MultiValueMap<String, String> params,String path) throws Exception {
        MvcResult result =null;
        try {
            System.out.println("传入参数:"+params);
            if (params==null||params.isEmpty()){
                result = mockMvc.perform(get(path))
                        .andExpect(status().isOk())
                        .andReturn();
            }else {
                result = mockMvc.perform(get(path).params(params))
                        .andExpect(status().isOk())
                        .andReturn();
            }
        } catch (java.lang.AssertionError e) {
            erro(e.getMessage());
            System.exit(1);
        }
        System.out.println("返回参数:"+result.getResponse().getContentAsString());
        return result.getResponse().getContentAsString();
    }

    /**
     * post 请求方式
     * @param params
     * @param path
     * @return
     * @throws Exception
     */
    public  Object postTest(MultiValueMap<String, String> params,String path) throws Exception {
        MvcResult result =null;
        try {
            System.out.println("传入参数:"+params);
            if (params==null||params.isEmpty()){
                result = mockMvc.perform(post(path))
                        .andExpect(status().isOk())
                        .andReturn();
            }else {
                result = mockMvc.perform(post(path).params(params))
                        .andExpect(status().isOk())
                        .andReturn();
            }
        } catch (java.lang.AssertionError e) {
            erro(e.getMessage());
            System.exit(1);
        }
        System.out.println("返回参数:"+result.getResponse().getContentAsString());
        return result.getResponse().getContentAsString();
    }

    /**
     * 异常类型判断
     * @param erro
     */
    public void erro(String erro){
        if (erro.contains("404")){
            System.out.println("请求url异常:"+404);
        }else if (erro.contains("405")){
            System.out.println("请求方式异常:"+405);
        }else {
            System.out.println("未编辑异常:"+erro);
        }
    }
}
### 回答1: Spring Boot控制器是一个Java类,用于处理HTTP请求并返回响应。它是Spring MVC框架的一部分,可以使用注解来定义请求映射和处理方法。Spring Boot控制器可以处理各种类型的请求,例如GET、POST、PUT和DELETE,并可以返回各种类型的响应,例如HTML、JSON和XML。它是构建Web应用程序的重要组件之一。 ### 回答2: Spring Boot是一个开发Web应用程序的框架,其中使用@Controller注解声明的类是视图控制器。这个控制器接收来自HTTP请求的用户输入,将其转换为Java对象,并将其发送到应用程序的其他部分进行处理。 @Controller注解是一个Spring MVC注解,它将一个类标记为一个控制器,并且这个控制器可以处理HTTP请求。在Spring Boot中,控制器类使用@Controller注解进行标记,该注解告诉Spring框架这个类是控制器,需要进行请求处理。此外,在@Controller注解上,还可以使用@RequestMapping注解进行更详细的声明,指定控制器类的特定处理函数处理哪些HTTP请求。 在Spring Boot中,控制器类包含各种处理函数,以处理不同类型的用户输入。控制器类中的每个处理函数都由Spring框架负责调用,这样,控制器类就可以将用户输入转换为Java对象,并将其发送到适当的处理程序中进行处理。 总而言之,Spring Boot中的控制器是一个非常重要的组件,用于接收并处理来自用户的HTTP请求。通过使用@Controller注解,Spring框架能够自动将请求路由到正确的处理程序,并在必要时将请求转换为Java对象。控制器类是Web应用程序的关键组成部分,可以帮助开发人员创建高效、可扩展的应用程序。 ### 回答3: Spring Boot ControllerSpring Boot 框架中的一个组件,用于管理和处理来自网络的请求和响应。它是 MVC 模式中的控制器,负责调度并响应浏览器或客户端发送的请求。 Spring Boot Controller 的最主要的功能就是接收来自浏览器、客户端等渠道的请求,然后根据请求中的参数、路径信息等,从后端系统中获取相应的数据,并将其封装成一个响应对象,最后通过网络返回给请求方。 Spring Boot Controller 实现一个简单的 GET 接口非常的简单,只需添加 @RestController 和 @RequestMapping 注解便可实现对外暴露的接口。 通过注解 @RequestMapping 可以指定该接口的请求路径、请求方式等信息。例如: @RestController @RequestMapping("/hello") public class HelloController { @GetMapping("/") public String hello() { return "Hello, World!"; } } 这个 Controller 配置了一个 GET 请求,访问路径为 "/hello/",返回值为 "Hello, World!"。 大多数Spring Boot Controller 都会从数据库、文件、或者其他接口中获取数据,然后对这些数据进行处理。因此,在实现一个 Spring Boot Controller 的过程中,通常还需要为其提供一个业务逻辑服务,以便能够从数据库或者其他接口中获取数据并进行处理。业务逻辑服务通常会被注入到 Controller 中,然后又被转换为 JSON 格式的响应对象返回给请求方。 因为 Spring Boot Controller 是 MVC 模式中的控制器,实现它需要使用到一系列 Spring Boot 模块和组件,比如 Spring Boot Web、Spring Boot Data JPA、Spring Boot Test 等等。这些模块和组件的主要作用是简化和规范化 Spring Boot Controller 的开发和测试,提高开发效率。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值