3 回答

TA貢獻(xiàn)1829條經(jīng)驗(yàn) 獲得超7個(gè)贊
無(wú)需創(chuàng)建您自己的Map.Entry
實(shí)現(xiàn)。您可以使用現(xiàn)有的實(shí)現(xiàn)之一,例如AbstractMap.SimpleEntry
:
Date?date?=?new?Date(); boolean?value?=?true; Map.Entry<Date,?Boolean>?entry?=??new?AbstractMap.SimpleEntry<>(date,?value); when(foo.getLastModifiedGid(any())).thenReturn(entry);
或AbstractMap.SimpleImmutableEntry
:
Map.Entry<Date,?Boolean>?entry?=??new?AbstractMap.SimpleImmutableEntry<>(date,?value);
作為旁注,來(lái)自的日期類java.util
已過(guò)時(shí),來(lái)自的類java.time
應(yīng)用于 Java 8+。具體來(lái)說(shuō),java.util.Date
被替換為java.time.Instant
.

TA貢獻(xiàn)1797條經(jīng)驗(yàn) 獲得超4個(gè)贊
構(gòu)建您自己的自定義 Entry 類需要大量額外的代碼實(shí)現(xiàn),僅用于測(cè)試。
這應(yīng)該是設(shè)計(jì)測(cè)試的一個(gè)危險(xiǎn)信號(hào),因?yàn)槟芸赡苁箚?wèn)題變得比需要的復(fù)雜得多。
相反,為什么不創(chuàng)建一個(gè)實(shí)際的地圖并讓地圖完成工作呢?
//define your expected response element
Date foo = ...;
Boolean bar = ...;
//instantiate map
Map<Date,Boolean> dummyMap = new HashMap<>();
dummyMap.put(foo, bar);
//fetch an actual working copy from a functional map
Map.Entry<Date, Boolean> baz = dummyMap.entrySet().stream().findFirst().get();
//mock away
when(foo.getLastModifiedGid(any())).thenReturn(baz);
我對(duì)您為什么要斷言有關(guān)條目本身的某些內(nèi)容感到有些困惑。如果你定義它,它應(yīng)該是你的。如果您的測(cè)試方法更改了它,請(qǐng)測(cè)試該結(jié)果,而不是您提供的固定對(duì)象。

TA貢獻(xiàn)1909條經(jīng)驗(yàn) 獲得超7個(gè)贊
您可以實(shí)現(xiàn)自己的條目
class DummyEntry<K,V> implements Map.Entry<K, V> {
K key;
V value;
public DummyEntry(K key, V value) {
this.key = key;
this.value = value;
}
@Override
public K getKey() {
return key;
}
@Override
public V getValue() {
return value;
}
@Override
public V setValue(V value) {
this.value = value;
return value;
}
}
然后將其返回到您的模擬中。
when(foo.getLastModifiedGid(any())).thenReturn(new DummyEntry(...))
添加回答
舉報(bào)