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