麻豆小视频在线观看_中文黄色一级片_久久久成人精品_成片免费观看视频大全_午夜精品久久久久久久99热浪潮_成人一区二区三区四区

首頁(yè) > 開發(fā) > Java > 正文

SpringBoot Controller Post接口單元測(cè)試示例

2024-07-14 08:43:02
字體:
供稿:網(wǎng)友

概述

在日常的開發(fā)中,我們一般會(huì)定義一個(gè)service層,用于實(shí)現(xiàn)業(yè)務(wù)邏輯,并且針對(duì)service層會(huì)有與之對(duì)應(yīng)的齊全的覆蓋率高的單元測(cè)試。而對(duì)于controller層,一般不怎么做單元測(cè)試,因?yàn)橹饕暮诵臉I(yè)務(wù)邏輯都在service層里,controller層只是做轉(zhuǎn)發(fā),調(diào)用service層接口而已。但是還是建議使用單元測(cè)試簡(jiǎn)單的將controller的方法跑一下,看看轉(zhuǎn)發(fā)和數(shù)據(jù)轉(zhuǎn)換的代碼是否能正常工作。

Spring Boot里對(duì)controller層進(jìn)行單元測(cè)試非常簡(jiǎn)單,只需要幾個(gè)注解和一點(diǎn)點(diǎn)輔助代碼即可搞定。

依賴的包

  <dependency>   <groupId>org.junit.jupiter</groupId>   <artifactId>junit-jupiter-api</artifactId>   <scope>test</scope>  </dependency>  <dependency>   <groupId>org.junit.jupiter</groupId>   <artifactId>junit-jupiter-engine</artifactId>   <scope>test</scope>  </dependency>  <dependency>   <groupId>org.springframework.boot</groupId>   <artifactId>spring-boot-starter-test</artifactId>   <scope>test</scope>  </dependency>  <dependency>   <groupId>com.alibaba</groupId>   <artifactId>fastjson</artifactId>  </dependency>

使用的Spring Boot 版本

2.0.4.RELEASE

代碼

@ExtendWith(SpringExtension.class)@SpringBootTest(webEnvironment =SpringBootTest.WebEnvironment.MOCK,classes = TestApplication.class)@AutoConfigureMockMvcpublic class UserControllerTest { @Autowired private MockMvc mockMvc; @MockBean private UserService userService; @Test @DisplayName("測(cè)試controller方法") void test() throws Exception {  User param = new User();  param.setUserId(1111);  List<Address> addressList = new ArrayList<>();  Address address = new Address();  address.setName("我的地址");  addressList.add(address);  param.setAddressList(addressList);  MvcResult mvcResult = mockMvc.perform(    post("/xxx/test")      .contentType(MediaType.APPLICATION_JSON)      .content(JSON.toJSONString(param)))    .andReturn();    System.out.println(mvcResult.getResponse().getContentAsString()); }}
@RequestMapping(value = "/xxx", method = RequestMethod.POST)public Object test(@RequestBody(required = false)User user) throws Exception {}

如果你只是想簡(jiǎn)單的跑一下controller層,不想真正的去執(zhí)行service方法的話,需要使用@MockBean將對(duì)應(yīng)的servicemock掉。

 @MockBean private UserService userService;

使用Spring Boot Test的時(shí)候,它需要一個(gè)ApplicationContext,我們可以在@SpringBootTest注解中使用classes屬性來指定。

@SpringBootTest(webEnvironment =SpringBootTest.WebEnvironment.MOCK,classes = TestApplication.class)

TestApplication的代碼很簡(jiǎn)單。

@SpringBootApplicationpublic class TestApplication { public static void main(String[] args){  SpringApplicationBuilder builder = new SpringApplicationBuilder();  builder.environment(new StandardEnvironment());  builder.sources(TestApplication.class);  builder.main(TestApplication.class);  builder.run(args); }}

接下來我們只需要使用MockMvc發(fā)送post請(qǐng)求即可。如果controller層的post方法是帶@RequestBody注解的,可以先將入?yún)?duì)象轉(zhuǎn)換成JSON字符串。這里使用的是fastjson

JSON.toJSONString(param)

經(jīng)過測(cè)試,如上代碼能正常工作。

總結(jié)

以上就是這篇文章的全部?jī)?nèi)容了,希望本文的內(nèi)容對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,謝謝大家對(duì)VeVb武林網(wǎng)的支持。


注:相關(guān)教程知識(shí)閱讀請(qǐng)移步到JAVA教程頻道。
發(fā)表評(píng)論 共有條評(píng)論
用戶名: 密碼:
驗(yàn)證碼: 匿名發(fā)表
主站蜘蛛池模板: 亚洲成人黄色片 | 性少妇videosexfreexx| 情侣啪啪网站 | 国产成人高清成人av片在线看 | 久久国产中文 | www.777含羞草 | 久久成人在线观看 | 国产一区精品在线观看 | 91精品久久久久久久久久久 | 黄网站在线观 | 成年人黄视频 | 欧美一级黄色免费看 | 亚洲综合精品 | 369看片你懂的小视频在线观看 | 午夜视频在线观看免费视频 | 久久新网址 | 国产精品久久久久久久久久久久午夜 | av电影免费播放 | 日产精品久久久一区二区福利 | 精精国产xxxx视频在线野外 | 午夜精品福利视频 | 把娇妻调教成暴露狂 | 热re91久久精品国产99热 | 精品国产一级毛片 | va视频| av电影在线观看网站 | 亚洲99 | 国产亚洲精品成人 | 久久精品首页 | 免费看搡女人无遮挡的视频 | 中文字幕在线播放第一页 | 91麻豆精品国产91久久久更新资源速度超快 | 草免费视频 | 日韩av电影免费在线观看 | 一级黄色淫片 | 亚洲成人综合网站 | 91嫩草丨国产丨精品入口 | 欧美巨根| 日韩1区| 国产一区二区影视 | 草人人|