[英]Mockito equivalent to this Hamcrest “samePropertyValuesAs”/jMock “with” idiom?
Hamcrest / jMock代碼如下所示:
@Test
public void setsSniperValuesInColumns() {
context.checking(new Expectations() {{
one(listener).tableChanged(with(aRowChangedEvent()));
}});
model.sniperStatusChanged(new SniperState("item id", 555, 666), MainWindow.STATUS_BIDDING);
...
}
private Matcher<TableModelEvent> aRowChangedEvent() {
return samePropertyValuesAs(new TableModelEvent(model, 0));
}
注意,這取自“以測試為導向的面向對象的軟件增長”(第157頁)。 本書的作者使用Hamcrest和jMock。 我認為AssertJ和Mockito可能更好。 當然,可以在同一個項目中同時使用這兩個測試框架,但這會讓人很困惑,看起來並不理想。
samePropertyValuesAs
來自import static org.hamcrest.beans.SamePropertyValuesAs.samePropertyValuesAs;
with
似乎來自JMock的
所以我想找到的方法是我可以使用Mockito的verify
方法,他們使用Expectations
。 但有什么方法可以做到這一點:
verify( listener ).tableChanged( samePropertyValues( new TableModelEvent( model, 0 )));
...當然,人們可以想象一個解決方法,你可以一個接一個地設置所有的屬性......但我想Mockito有更好的開箱即用。
refEq
匹配器看起來像你正在尋找的:
verify(listener).tableChanged(refEq(new TableModelEvent(model, 0)));
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.