public void executeHook(final FilterMessageContext context) {
        if (!this.filterMessageHookList.isEmpty()) {
            for (FilterMessageHook hook : this.filterMessageHookList) {
                try {
                    hook.filterMessage(context);
                } catch (Throwable e) {
                    log.error("execute hook error. hookName={}", hook.hookName());
                }
            }
        }
    }
@Test
    public void testExecuteHook() throws IllegalAccessException {
        FilterMessageContext filterMessageContext = mock(FilterMessageContext.class);
        ArrayList<FilterMessageHook> filterMessageHookList = new ArrayList<>();
        FilterMessageHook filterMessageHook = mock(FilterMessageHook.class);
        filterMessageHookList.add(filterMessageHook);
        FieldUtils.writeDeclaredField(pullAPIWrapper, "filterMessageHookList", filterMessageHookList, true);
        pullAPIWrapper.executeHook(filterMessageContext);
        verify(filterMessageHook, times(1)).filterMessage(any(FilterMessageContext.class));
    }