@Override
    protected Mono<Void> doExecute(final ServerWebExchange exchange, final ShenyuPluginChain chain, final SelectorData selector, final RuleData rule) {
        ShenyuContext shenyuContext = exchange.getAttribute(Constants.CONTEXT);
        assert shenyuContext != null;
        ModifyResponseRuleHandle ruleHandle = ModifyResponsePluginDataHandler.CACHED_HANDLE.get().obtainHandle(CacheKeyUtils.INST.getKey(rule));
        if (Objects.isNull(ruleHandle)) {
            return chain.execute(exchange);
        }
        return chain.execute(exchange.mutate()
                .response(new ModifyResponseDecorator(exchange, ruleHandle)).build());
    }
@Test
    public void testDoExecute() {
        when(chain.execute(any())).thenReturn(Mono.empty());
        final RuleData ruleDataTest = RuleData.builder().id("1")
                .name("test-modify-response-plugin")
                .pluginName("modifyResponse")
                .selectorId("1")
                .matchMode(1)
                .sort(1)
                .loged(true)
                .selectorId("test")
                .build();
        final ModifyResponseRuleHandle responseRuleHandle = new ModifyResponseRuleHandle();
        final Map<String, String> map = new HashMap<>();
        map.put("context-path-id", "1");
        responseRuleHandle.setAddHeaders(map);
        ModifyResponsePluginDataHandler.CACHED_HANDLE.get().cachedHandle("test_test-modify-response-plugin", responseRuleHandle);
        Mono<Void> result = modifyResponsePlugin.doExecute(exchange, chain, selectorData, ruleDataTest);
        StepVerifier.create(result).expectSubscription().verifyComplete();
    }