### Question:
BasicFlowManagerService implements FlowManagerService { @Override public List<FlowSpec> retrieveCandidateFlowSpecs( final TransferAttempt transferAttempt) throws ConveyorExecutionException { log.info("retrieveCandidateFlowSpecs()"); if (transferAttempt == null) { throw new IllegalArgumentException("null transfer attempt"); } List<FlowSpec> candidateFlowSpecs = new ArrayList<FlowSpec>(); List<FlowSpec> flowSpecs = flowSpecCacheService.getFlowSpecs(); for (FlowSpec flowSpec : flowSpecs) { if (selectorProcessor.evaluateSelectorForTransfer(flowSpec, transferAttempt)) { log.info("added candidate flow spec:{}", flowSpec); candidateFlowSpecs.add(flowSpec); } } return Collections.unmodifiableList(candidateFlowSpecs); }  @Override void setFlowSpecCacheService(
			final FlowSpecCacheService flowSpecCacheService); @Override List<FlowSpec> retrieveCandidateFlowSpecs(
			final TransferAttempt transferAttempt); ConveyorService getConveyorService(); void setConveyorService(final ConveyorService conveyorService);  }### Answer:
@Test public void testRetrieveCandidateFlowSpecs() throws ConveyorExecutionException { String host = "test"; String zone = "zone"; FlowActionEnum action = FlowActionEnum.GET; String fqcn = Microservice.class.getName(); FlowSpec flow = Flow.define().forAction(action).forHost(host) .forZone(zone).onAllConditions().endPreOperationChain() .endPreFileChain().addPostFileMicroservice(fqcn) .endPostFileChain().endPostOperationChain() .endFlowWithoutErrorHandler(); List<FlowSpec> candidates = new ArrayList<FlowSpec>(); candidates.add(flow); FlowSpecCacheService flowSpecCacheService = Mockito .mock(FlowSpecCacheService.class); Mockito.when(flowSpecCacheService.getFlowSpecs()) .thenReturn(candidates); ConveyorService conveyorService = Mockito.mock(ConveyorService.class); BasicFlowManagerService flowManagerService = new BasicFlowManagerService(); flowManagerService.setFlowSpecCacheService(flowSpecCacheService); flowManagerService.setConveyorService(conveyorService); Transfer transfer = new Transfer(); GridAccount gridAccount = new GridAccount(); gridAccount.setHost(host); gridAccount.setZone(zone); transfer.setTransferType(TransferType.GET); transfer.setGridAccount(gridAccount); TransferAttempt transferAttempt = new TransferAttempt(); transferAttempt.setTransfer(transfer); List<FlowSpec> flowSpecs = flowManagerService .retrieveCandidateFlowSpecs(transferAttempt); Assert.assertFalse("did not get the flowSpec", flowSpecs.isEmpty()); }