The code of Method publishConfig of Class ConsulDynamicConfiguration:
```java
    @Override
    public boolean publishConfig(String key, String group, String content) throws UnsupportedOperationException {
        String normalizedKey = convertKey(group, key);
        return kvClient.putValue(normalizedKey + PATH_SEPARATOR + content);
    }
```
We want put a config with value with the "content", but the method just add the "content" to the key and put a null value.
}
    @Test
    public void testAddListener() {
        KVCache cache = KVCache.newCache(kvClient, "/dubbo/config/dubbo/foo");
        cache.addListener(newValues -> {
            
            
            Optional<Value> newValue = newValues.values().stream()
                    .filter(value -> value.getKey().equals("foo"))
                    .findAny();
            newValue.ifPresent(value -> {
                
                Optional<String> decodedValue = newValue.get().getValueAsString();
                decodedValue.ifPresent(v -> System.out.println(String.format("Value is: %s", v))); 
            });
        });
        cache.start();
        kvClient.putValue("/dubbo/config/dubbo/foo", "new-value");
        kvClient.putValue("/dubbo/config/dubbo/foo/sub", "sub-value");
        kvClient.putValue("/dubbo/config/dubbo/foo/sub2", "sub-value2");
        kvClient.putValue("/dubbo/config/foo", "parent-value");
        System.out.println(kvClient.getKeys("/dubbo/config/dubbo/foo"));
        System.out.println(kvClient.getKeys("/dubbo/config"));
        System.out.println(kvClient.getValues("/dubbo/config/dubbo/foo"));
    }
    @Test
    public void testGetConfigKeys() {
    }
}