### Question:
ConsumedThingProperty extends ThingProperty<T> { public CompletableFuture<T> read() { try { Pair<ProtocolClient, Form> clientAndForm = thing.getClientFor(getForms(), Operation.READ_PROPERTY); ProtocolClient client = clientAndForm.first(); Form form = clientAndForm.second(); log.debug("Thing '{}' reading Property '{}' from '{}'", thing.getId(), name, form.getHref()); CompletableFuture<Content> result = client.readResource(form); return result.thenApply(content -> { try { return ContentManager.contentToValue(content, this); } catch (ContentCodecException e) { throw new CompletionException(new ConsumedThingException("Received invalid writeResource from Thing: " + e.getMessage())); } }); } catch (ConsumedThingException e) { throw new CompletionException(e); } } ConsumedThingProperty(String name, ThingProperty<T> property, ConsumedThing thing); CompletableFuture<T> read(); CompletableFuture<T> write(T value); Observable<Optional<T>> observer(); @Override int hashCode(); @Override boolean equals(Object o); @Override String toString();  }### Answer:
@Test public void readShouldCallUnderlyingClient() throws ConsumedThingException { when(thing.getClientFor(any(List.class), any())).thenReturn(new Pair(client, form)); when(client.readResource(any())).thenReturn(completedFuture(null)); ConsumedThingProperty<Object> consumedThingProperty = new ConsumedThingProperty<Object>("myProperty", property, thing); consumedThingProperty.read(); verify(client).readResource(any()); }