zoukankan      html  css  js  c++  java
  • MockMvc 进行 controller层单元测试 事务自动回滚 完整实例

     1 package com.ieou.ms_backend.controller;
     2 
     3 import com.google.gson.Gson;
     4 import com.ieou.ms_backend.dto.account.CreateAccountReq;
     5 import org.junit.Before;
     6 import org.junit.Test;
     7 import org.junit.runner.RunWith;
     8 import org.springframework.beans.factory.annotation.Autowired;
     9 import org.springframework.boot.test.context.SpringBootTest;
    10 import org.springframework.http.MediaType;
    11 import org.springframework.test.annotation.Rollback;
    12 import org.springframework.test.context.junit4.SpringJUnit4ClassRunner;
    13 import org.springframework.test.web.servlet.MockMvc;
    14 import org.springframework.test.web.servlet.MockMvcBuilder;
    15 import org.springframework.test.web.servlet.ResultActions;
    16 import org.springframework.test.web.servlet.ResultMatcher;
    17 import org.springframework.test.web.servlet.request.MockHttpServletRequestBuilder;
    18 import org.springframework.test.web.servlet.request.MockMvcRequestBuilders;
    19 import org.springframework.test.web.servlet.result.MockMvcResultHandlers;
    20 import org.springframework.test.web.servlet.result.MockMvcResultMatchers;
    21 import org.springframework.test.web.servlet.setup.MockMvcBuilders;
    22 import org.springframework.transaction.annotation.Transactional;
    23 import org.springframework.web.context.WebApplicationContext;
    24 
    25 
    26 import static org.junit.Assert.*;
    27 
    28 /**
    29  * created by wyz on 2019/5/6
    30  */
    31 
    32 @SpringBootTest
    33 @RunWith(SpringJUnit4ClassRunner.class)
    34 public class AccountControllerTest {
    35 
    36     @Autowired
    37     private WebApplicationContext wac;
    38 
    39     private MockMvc mockMvc;
    40     private String url = "/ms_backend/account/";
    41 
    42     @Before
    43     public void setUp() throws Exception{
    44         //初始化MockMvc对象
    45         mockMvc = MockMvcBuilders.webAppContextSetup(wac).build();
    46     }
    47 
    48 
    49     //GET 请求
    50 
    51     @Test
    52     public void accountList() throws Exception {
    53 
    54         MockHttpServletRequestBuilder mockHttpServletRequestBuilder = MockMvcRequestBuilders.get(url + "accountList")
    55                 .param("companyName", "wang")
    56                 .header("access_token", "accessToken");
    57 
    58         mockHttpServletRequestBuilder.accept(MediaType.APPLICATION_JSON)
    59                 .contentType(MediaType.APPLICATION_JSON_UTF8);
    60 
    61         ResultActions resultActions = mockMvc.perform(mockHttpServletRequestBuilder);
    62         resultActions.andReturn().getResponse().setCharacterEncoding("UTF-8");
    63         resultActions.andExpect(MockMvcResultMatchers.status().isOk());
    64         resultActions.andDo(MockMvcResultHandlers.print());
    65     }
    66 
    67     @Test
    68     public void removeAccount() {
    69     }
    70 
    71     //post 请求  @RequestBody
    72 
    73     @Test
    74     @Transactional
    75     @Rollback() // 事务自动回滚,默认是true。可以不写
    76     public void createAccount() throws Exception {
    77 
    78         CreateAccountReq req = new CreateAccountReq();
    79 
    80         MockHttpServletRequestBuilder mockHttpServletRequestBuilder = MockMvcRequestBuilders.post(url + "createAccount")
    81                 .header("access_token", "accessToken");
    82 
    83         mockHttpServletRequestBuilder.accept(MediaType.APPLICATION_JSON)
    84                 .contentType(MediaType.APPLICATION_JSON_UTF8)
    85                 .content(new Gson().toJson(req)); // post请求
    86 
    87         ResultActions resultActions = mockMvc.perform(mockHttpServletRequestBuilder);
    88         resultActions.andReturn().getResponse().setCharacterEncoding("UTF-8");
    89         resultActions.andExpect(MockMvcResultMatchers.status().isOk());
    90         resultActions.andDo(MockMvcResultHandlers.print());
    91     }
    92 }
  • 相关阅读:
    HTML5结构
    HTML5新增的非主体元素header元素、footer元素、hgroup元素、adress元素
    CF GYM 100703G Game of numbers
    CF GYM 100703I Endeavor for perfection
    CF GYM 100703K Word order
    CF GYM 100703L Many questions
    CF GYM 100703M It's complicate
    HDU 5313 Bipartite Graph
    CF 560e Gerald and Giant Chess
    POJ 2479 Maximum sum
  • 原文地址:https://www.cnblogs.com/wang-yaz/p/10820951.html
Copyright © 2011-2022 走看看