KnowledgeHub
Questions
Tags
Users
Search
Alex Rivera
|
Logout
Edit Question
Title
Body
I have an async method I am converting to a sync method using a countdown latch. I'm struggling with writing a unit test without using mockito's timeout function. I can't work out how to get the verify method to wait for the async method call: public interface SyncExchangeService { boolean placeOrder(Order order); } public interface ExchangeService { void placeOrder(Order order, OrderCallback orderResponseCallback); } public interface OrderCallback { public void onSuccess(); public void onFailure(); } public class SyncExchangeServiceAdapter implements SyncExchangeService { private ExchangeService exchangeService; public SyncExchangeServiceAdapter(ExchangeService exchangeService) { this.exchangeService = exchangeService; } @Override public boolean placeOrder(Order order) { final CountDownLatch countdownLatch=new CountDownLatch(1); final AtomicBoolean result=new AtomicBoolean(); exchangeService.placeOrder(order, new OrderCallback() { @Override public void onSuccess() { result.set(true); countdownLatch.countDown(); } @Override public void onFailure(String rejectReason) { result.set(false); countdownLatch.countDown(); } }); try { countdownLatch.await(); } catch (InterruptedException e) { throw new RuntimeException(e); } return result.get(); } } public class SyncExchangeServiceAdapterTest { private ExchangeService mockExchange=mock(ExchangeService.class); private SyncExchangeServiceAdapter adapter=new SyncExchangeServiceAdapter(mockExchange); private Boolean response; private ArgumentCaptor<Boolean> callback=CaptorArgumentCaptor.forClass(OrderCallback.class); private CountDownLatch latch=new CountDownLatch(1); @Test public void testPlaceOr
Tags (comma-separated)
Save Edits
Cancel