@Async
    @EventListener(ReplyCreatedEvent.class)
    public void onNewReply(ReplyCreatedEvent event) {
        Reply reply = event.getReply();
        var commentName = reply.getSpec().getCommentName();
        client.fetch(Comment.class, commentName)
            .ifPresent(comment -> newReplyReasonPublisher.publishReasonBy(reply, comment));
    }
@Test
    void onNewReplyTest() {
        var reply = mock(Reply.class);
        var spec = mock(Reply.ReplySpec.class);
        when(reply.getSpec()).thenReturn(spec);
        when(spec.getCommentName()).thenReturn("fake-comment");

        var spyReasonPublisher = spy(reasonPublisher);
        var comment = mock(Comment.class);

        when(client.fetch(eq(Comment.class), eq("fake-comment")))
            .thenReturn(Optional.of(comment));

        var event = new ReplyCreatedEvent(this, reply);
        spyReasonPublisher.onNewReply(event);

        verify(newReplyReasonPublisher).publishReasonBy(eq(reply), eq(comment));
        verify(spec).getCommentName();
        verify(client).fetch(eq(Comment.class), eq("fake-comment"));
    }