### Question:
RestRemoteMole implements Mole { @Override public void instruct(MissionHandle handle, Strand strand, StrandCommand command) { clientUtils.post(MoleWebApi.instructInstance(handle.id(),strand.id(),command.name()), MediaType.APPLICATION_JSON, BodyInserters.empty()); } RestRemoteMole(String baseUrl); @Override Flux<AgencyState> states(); @Override Mono<MissionRepresentation> representationOf(Mission mission); @Override Mono<MissionParameterDescription> parameterDescriptionOf(Mission mission); @Override Flux<MissionState> statesFor(MissionHandle handle); @Override Flux<MissionOutput> outputsFor(MissionHandle handle); @Override Flux<MissionRepresentation> representationsFor(MissionHandle handle); @Override Mono<MissionHandle> instantiate(Mission mission, Map<String, Object> params); @Override void instruct(MissionHandle handle, Strand strand, StrandCommand command); @Override void instructRoot(MissionHandle handle, StrandCommand command); @Override void instructBlock(MissionHandle handle, String blockId, BlockCommand command); @Override void instruct(final MissionHandle handle, final MissionCommand command);  }### Answer:
@Test public void instruct() { RestRemoteMole remoteMole = new RestRemoteMole(baseUrl); remoteMole.instruct(MissionHandle.ofId("missionId"), Strand.ofId("strandId"), StrandCommand.RESUME); Mockito.verify(mole, Mockito.timeout(1000).atLeastOnce()).instruct(any(), any(), any()); }
@Ignore @Test(expected = IllegalArgumentException.class) public void instructReturnsError() { RestRemoteMole remoteMole = new RestRemoteMole(baseUrl); doThrow(new IllegalArgumentException("the mole is returning an error")) .when(mole).instruct(any(), any(), any()); remoteMole.instruct(MissionHandle.ofId("missionId"), Strand.ofId("strandId"), StrandCommand.RESUME); }