這本書面向對象軟件在jMock中給出了幾個例子,其中狀態是明確的而不通過API暴露。我真的喜歡這個主意。有沒有辦法在Mockito中做到這一點?mockito是否與jMock的國家有相同的習慣用法?
下面是從書中
public class SniperLauncherTest {
private final States auctionState = context.states("auction state")
.startsAs("not joined");
@Test public void addsNewSniperToCollectorAndThenJoinsAuction() {
final String itemId = "item 123";
context.checking(new Expectations() {{
allowing(auctionHouse).auctionFor(itemId); will(returnValue(auction));
oneOf(sniperCollector).addSniper(with(sniperForItem(item)));
when(auctionState.is("not joined"));
oneOf(auction).addAuctionEventListener(with(sniperForItem(itemId)));
when(auctionState.is("not joined"));
one(auction).join(); then(auctionState.is("joined"));
}});
launcher.joinAuction(itemId);
}
}
這種方式比其他答案清潔。 +1 –
比本書中使用的jMock好得多(這很好,但有一些缺陷)。他們不斷強調需要使測試代碼容易掌握,但從這個角度來看,無論如何,從我的新手的角度來看,Mockito似乎遠優於其他人。 –
然而,'SniperState'是名字的一個不幸的選擇......因爲這本書介紹了它自己的SniperState類。 154(它不是一個簡單的'enum')... –