本成長オブジェクト指向ソフトウェアは、状態が明示的にAPIを介して公開されていないjMockのいくつかの例を示しています。私はこの考えが本当に好きです。 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クラスをpに導入しているためです。 154(それは単純な 'enum'ではありません)... –