Mockito相当于这个Hamcrest "samePropertyValuesAs"/jMock "with"成语?



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)));

相关内容

  • 没有找到相关文章

最新更新