### Question:
BindablePropertyAdapterImpl implements BindablePropertyAdapter<T, R> { @Override public String getCaption(T pojo) { return translationService.getPropertyCaption(getId(pojo)); } private  BindablePropertyAdapterImpl(StunnerTranslationService translationService,
                                        BindableAdapterFunctions functions,
                                        Map<Class<?>, String> valueFields); static BindablePropertyAdapterImpl<Object, Object> create(StunnerTranslationService translationService,
                                                                     BindableAdapterFunctions functions); static BindablePropertyAdapterImpl<Object, Object> create(StunnerTranslationService translationService,
                                                                     BindableAdapterFunctions functions,
                                                                     Map<Class<?>, String> valueFields); @Override void addBinding(Class<?> type, String valueField); @Override String getId(T pojo); @Override String getCaption(T pojo); @Override R getValue(T pojo); @Override void setValue(T pojo, R value); @Override int getPriority(); @Override boolean accepts(Class<?> type);  }### Answer:
@Test public void testGetCaption() { when(translationService.getPropertyCaption(BindableTestProperty1.class.getName())) .thenReturn("p1"); when(translationService.getPropertyCaption(BindableTestProperty2.class.getName())) .thenReturn("p2"); String caption1 = tested.getCaption(PROPERTY_1); String caption2 = tested.getCaption(PROPERTY_2); assertEquals("p1", caption1); assertEquals("p2", caption2); }