ドメインモデルの実装(4) ~PlaceOrderServiceTest~
前回モック用に作ったインターフェースを利用して、PlaceOrderServiceのテストコードを書きます。
@RunWith(JMock.class) public class PlaceOrderServiceTests extends TestCase { private PendingOrderRepository pendingOrderRepository; private PendingOrder pendingOrder; private String pendingOredrId; private Date goodDeliveryTime; private Address goodDeliveryAddress; private PlaceOrderService service; private Mockery context = new JUnit4Mockery(); public void setUp() throws Exception { pendingOrderRepository = context.mock(PendingOrderRepository.class); service = new PlaceOrderServiceImpl(pendingOrderRepository); pendingOrder = context.mock(PendingOrder.class); goodDeliveryAddress = new Address(); goodDeliveryTime = new Date(); pendingOredrId = "pendingOrderId"; } @Test public void testUpdateDeliveryInfo_Good() { context.checking(new Expectations() {{ allowing(pendingOrderRepository).findOrCreatePendingOrder(pendingOredrId); will(returnValue(pendingOrder)); }}); context.checking(new Expectations() {{ allowing(pendingOrder).updateDeliveryInfo(goodDeliveryAddress,goodDeliveryTime); will(returnValue(true)); }}); PlaceOrderServiceResult result = service.updateDeliveryInfo(pendingOredrId, goodDeliveryAddress, goodDeliveryTime); PendingOrder pendingOrder = result.getPendingOrder(); assertTrue(result.isSuccess()); PendingOrder returnPendingOrder = result.getPendingOrder(); assertSame(pendingOrder, returnPendingOrder); assertEquals(goodDeliveryAddress, pendingOrder.getDeliveryAddress()); assertEquals(goodDeliveryTime, pendingOrder.getDeliveryTime()); } }