雖然easymock中提供了大量的方法來進行引數匹配,但是對於一些特殊場合比如引數是複雜物件而又不能簡單的通過equals()方法來比較,這些現有的引數匹配器就無能為力了。easymock為此提供了iargumentmatcher 介面來讓我們實現自定義的引數匹配器。
我們還是用例子來說話:
要測試的介面
package引數型別定義mocktest;
public
inte***ce
service
packagemocktest;
public
class
request
public
string getvalue1()
public
string getvalue2()
public
void setcondition(boolean
condition)
public
void
setvalue1(string value1)
public
void
setvalue2(string value2)
public request(boolean
condition, string value1, string value2)
}
package自定義匹配器mocktest;
public
class
mdata
public
string tostring()
}
假設在我們的這個單獨的測試案例中,我們有以下引數匹配邏輯: 如果condition為true,則只需要比較value1;如果condition為false,則只需要比較value2. 由於這個邏輯和預設的equals方法不一致,因此我們不能直接使用equals方法,只能實現自己的引數匹配器。
packageequalsmdata是為了演示當引數是物件陣列的時候怎麼實現引數匹配的.關鍵是要把object物件強制性轉換為物件陣列.mocktest;
import
org.easymock.easymock;
import
org.easymock.iargumentmatcher;
public
class requestmatcher implements
iargumentmatcher
@override
public
void
}@override
public
boolean
matches(object argument)
request request =(request) argument;
if(condition)
else
}public
static request requestequals(boolean
condition, string expectedvalue)
}
package測試mocktest;
import
org.easymock.easymock;
import
org.easymock.iargumentmatcher;
//實現iargumentmatcher介面
class equalsmdata implements
iargumentmatcher
public
static
mdata zsmdataequals(mdata expect)
@override
//這個方法實現匹配引數的邏輯
public
boolean matches(object argument)
}return
true
; }
@override
//這個方法是匹配錯誤後要列印的資訊
public
void
//todo auto-generated method stub
for (int i = 0; i < expect.length; i++)
for (int j = 0; j < actual.length; j++) }}
packagemocktest;
import org.easymock.*;
import org.junit.*;
import
static org.easymock.easymock.*;
public
class
testeasymock ;
request request = new request(expectedcondition, "aaa", "ccc");
//引數匹配器每次只能實現乙個引數匹配,所以對於多個引數,要實現多個自定義匹配器
service.execute(
requestmatcher.requestequals(expectedcondition, expectedvalue),
equalsmdata.zsmdataequals(datas), anyint());
easymock.expectlastcall();
easymock.replay(service);
//mdata datas2 = ;
service.execute(request, datas, 1);
easymock.verify(service);}}
MUI自定義事件傳參
在mui中頁面之間的傳參一般是分為兩種的,一種是通過開啟頁面或者預載入頁面的時候傳遞引數,另一種就是自定義事件了,我們來說說自定義事件傳參的問題 我們來分兩種情況 一,頁面已經存在的時候 這種情況是很容易的,直接就是mui.fire 目標頁面,事件名稱,二,頁面是新建立的 如果你是這麼寫的話 var...
mybatis自定義傳參排序
getvirtualtaskdetailandinfo parametertype map resulttype map select t.id,t.task num,t.province,t.city,t.status t.create time,t.enable time,t.end time,...
自定義指令函式傳參
vue 2.6.6 繫結函式傳參 傳參多個多樣 引數動態變化 1.採用傳物件方式 binding.value 測試 const mydirective export default mydirective以上解決了問題1.繫結函式傳參,對於問題2.傳參多個多樣可以給args乙個物件,或者用陣列 測試...