Mockito 通過使用?equals()
?這種自然的 Java 樣式來校驗參數值。有時候,當需要有其他一些靈活性的時候,你可能會要求使用參數匹配(argument matchers)。
創(chuàng)新互聯服務項目包括工農網站建設、工農網站制作、工農網頁制作以及工農網絡營銷策劃等。多年來,我們專注于互聯網行業(yè),利用自身積累的技術優(yōu)勢、行業(yè)經驗、深度合作伙伴關系等,向廣大中小型企業(yè)、政府機構等提供互聯網行業(yè)的解決方案,工農網站推廣取得了明顯的社會效益與經濟效益。目前,我們服務的客戶以成都為中心已經輻射到工農省份的部分城市,未來相信會繼續(xù)擴大服務區(qū)域并繼續(xù)獲得客戶的支持與信任!
請參考下面的代碼:
//stubbing using built-in anyInt() argument matcher when(mockedList.get(anyInt())).thenReturn( "element" ); ? //stubbing using custom matcher (let's say isValid() returns your own matcher implementation): when(mockedList.contains(argThat(isValid()))).thenReturn( "element" ); ? //following prints "element" System.out.println(mockedList.get( 999 )); ? //you can also verify using an argument matcher verify(mockedList).get(anyInt()); ? //argument matchers can also be written as Java 8 Lambdas verify(mockedList).add(argThat(someString -> someString.length() >? 5 )); |
參數匹配運行進行靈活校驗或者打標。
請訪問?https://static.javadoc.io/org.mockito/mockito-core/3.0.0/org/mockito/hamcrest/MockitoHamcrest.html?鏈接來查看更多有關自定義參數匹配器/hamcrest matchers(custom argument matchers/hamcrest matchers)的內建參數匹配器和示例。
更多有關?自定義參數匹配器(custom argument matchers)的使用,請參考?ArgumentMatcher
?類的 API 文檔。
在使用復雜參數匹配器的時候需要謹慎。嘗試給一個干凈并且簡單的測試的時候,盡量選擇自然的參數匹配使用的是??equals()
?對比相對偶然使用??anyX()
?來說。有時候可能對你的代碼進行一些重構來允許??equals()
?進行匹配,或者可以實現(implement)equals()
方法來幫助進行測試。
同時,請閱讀?Capturing arguments for further assertions (Since 1.8.0)?頁面中的內容,或者參考?ArgumentCaptor
?類的 API。
ArgumentCaptor
?是有關參數匹配器的是特殊實現,能夠為后面的對比(assertions)捕獲參數變量。
如果你現在正在使用參數匹配器,所有參數(all arguments)都必須由 matches 提供。
下面的示例代碼顯示校驗,但是一些將會應用到打標中。
verify(mock).someMethod(anyInt(), anyString(), eq( "third argument" )); //above is correct - eq() is also an argument matcher ? verify(mock).someMethod(anyInt(), anyString(),? "third argument" ); //above is incorrect - exception will be thrown because third argument is given without an argument matcher. |
像?anyObject()
,?eq()
?Matcher 方法不會返回?matchers。
在內部,他們將會在堆棧(stack)中記錄一個?matcher 然后返回一個虛假的值(通常為 null)。
這種實現方式是基于 Java 編譯器中有關靜態(tài)類型的安全性問題而考慮的,從而帶來的結果是你不能在?verified/stubbed 方法外部使用?anyObject()
,?eq()
。
?
https://www.cwiki.us/display/MockitoZH/Argument+matchers
當前名稱:Mockito2參數匹配器
當前網址:http://www.2m8n56k.cn/article32/jssgsc.html
成都網站建設公司_創(chuàng)新互聯,為您提供網站排名、微信公眾號、自適應網站、移動網站建設、靜態(tài)網站、網站策劃
聲明:本網站發(fā)布的內容(圖片、視頻和文字)以用戶投稿、用戶轉載內容為主,如果涉及侵權請盡快告知,我們將會在第一時間刪除。文章觀點不代表本網站立場,如需處理請聯系客服。電話:028-86922220;郵箱:[email protected]。內容未經允許不得轉載,或轉載時需注明來源: 創(chuàng)新互聯