### Question:
RestRemoteMole implements Mole { @Override public Flux<MissionOutput> outputsFor(MissionHandle handle) { return clientUtils.flux(MoleWebApi.instanceOutputsUrl(handle.id()), MissionOutputDto.class) .map(MissionOutputDto::toMissionOutput); } 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 outputsFor() { RestRemoteMole remoteMole = new RestRemoteMole(baseUrl); Flux<MissionOutput> outputs = remoteMole.outputsFor(MissionHandle.ofId("missionHandleId")); assertThat(outputs.hasElements().block()).isTrue(); System.out.println(outputs.blockFirst(Duration.ofSeconds(1)).get(BLOCK1, aString("example"))); assertThat(outputs.blockFirst(Duration.ofSeconds(1)).get(BLOCK1, aString("example"))).isEqualTo("this is an output example"); }
@Ignore @Test(expected = IllegalArgumentException.class) public void outputsForReturnsError() { RestRemoteMole remoteMole = new RestRemoteMole(baseUrl); when(mole.outputsFor(any())).thenThrow(new IllegalArgumentException("the mole is returning an error")); Flux<MissionOutput> outputs = remoteMole.outputsFor(MissionHandle.ofId("anything")); }