mock 抛出一个异常如何终止_教你使用Mock完成单元测试
更多精彩文章請關(guān)注本人微信公眾號
1、什么是Mock?
mock是在測試過程中,對于一些不容易構(gòu)造/獲取的對象,創(chuàng)建一個mock對象來模擬對象的行為。比如說你需要調(diào)用B服務(wù),可是B服務(wù)還沒有開發(fā)完成,那么你就可以將調(diào)用B服務(wù)的那部分給Mock掉,并編寫你想要的返回結(jié)果。 Mock有很多的實(shí)現(xiàn)框架,例如Mockito、EasyMock、Jmockit、PowerMock、Spock等等,SpringBoot默認(rèn)的Mock框架是Mockito,和junit一樣,只需要依賴spring-boot-starter-test就可以了。本文代碼基于jdk8、junit5、Mockito3
1.1、 Mockito中文文檔
Mockito是mocking框架,它讓你用簡潔的API做測試。而且Mockito簡單易學(xué),它可讀性強(qiáng)和驗(yàn)證語法簡潔。Mockito是GitHub上使用最廣泛的Mock框架,并與JUnit結(jié)合使用.Mockito框架可以創(chuàng)建和配置mock對象.使用Mockito簡化了具有外部依賴的類的測試開發(fā)! Mockito具體使用方法見文檔https://github.com/hehonghui/mockito-doc-zh#0
1.2、Mockito基本使用方法簡介
1)、靜態(tài)導(dǎo)入會使代碼更簡潔
import static舉例:
//創(chuàng)建mock對象,mock一個List接口2)、驗(yàn)證某些行為
//你可以mock一個具體的類型,而不僅是接口 一旦mock對象被創(chuàng)建了,mock對象會記住所有的交互。然后你就可能選擇性的驗(yàn)證你感興趣的交互。3)、如何做一些測試樁
//測試樁4)、其他使用見上面文檔
2、MockMVC基于RESTful風(fēng)格的測試
對于前后端分離的項(xiàng)目而言,無法直接從前端靜態(tài)代碼中測試接口的正確性,因此可以通過MockMVC來模擬HTTP請求。基于RESTful風(fēng)格的SpringMVC的測試,我們可以測試完整的Spring MVC流程,即從URL請求到控制器處理,再到視圖渲染都可以測試。
2.1、初始化MockMvc對象
@Autowired2.2、完成一些接口的測試
1)、嘗試測試一個不存在的請求 /user/1
/**展示結(jié)果:
2)、在Controller中完成 /user/{id}
/** 修改一下測試類:期待返回的結(jié)果是200@Test結(jié)果展示:
3)、我們可以把結(jié)果打印到控制臺
// 期望的結(jié)果狀態(tài) 200運(yùn)行結(jié)果:可以看到并沒有返回結(jié)果
4)、結(jié)合Mockito構(gòu)建自定義返回結(jié)果
這里就用到了Mockito的應(yīng)用場景,userService.getById并沒有返回結(jié)果,但是我們的測試并不關(guān)心userService.getById這個方法是否正常,只是在我們的測試中需要用到這個方法,所以我們可以Mock掉UserService的getById方法,自己定義返回的結(jié)果,繼續(xù)我們的測試。@MockBean運(yùn)行結(jié)果
5)、傳參數(shù)
@Test6)、期望返回結(jié)果集有兩個元素
@Test運(yùn)行結(jié)果:
7)、測試Post請求
@Test3、一些常用API總結(jié)
常用的期望:
//使用jsonPaht驗(yàn)證返回的json中code、message字段的返回值附帶常用API解釋:
RequestBuilder/MockMvcRequestBuilders:
//根據(jù)uri模板和uri變量值得到一個GET請求方式的MockHttpServletRequestBuilder;MockHttpServletRequestBuilder:
//:添加頭信息;MockMultipartHttpServletRequestBuilder
//:指定要上傳的文件;ResultActions
//:添加驗(yàn)證斷言來判斷執(zhí)行請求后的結(jié)果是否是預(yù)期的;ResultMatcher/MockMvcResultMatchers
//:請求的Handler驗(yàn)證器,比如驗(yàn)證處理器類型/方法名;此處的Handler其實(shí)就是處理請求的控制器;總結(jié)
以上是生活随笔為你收集整理的mock 抛出一个异常如何终止_教你使用Mock完成单元测试的全部內(nèi)容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: 如虎似狼是什么意思
- 下一篇: 如何知道一个域名是否存在_域名检测API