Как я могу протестировать метод с аннотацией @KafkaListener в приложении Spring-Boot?

У меня есть spring компонент с @KafkaListener методом:

@Slf4j
@Component
public class ResponseHandler {

    private final ResponseMessageService responseMessageService;

    public ResponseHandler(ResponseMessageService responseMessageService) {
        this.responseMessageService= responseMessageService;
    }

    @KafkaListener(topics = "response-topic", groupId = "response-group")
    public void listen(ResponseMessage responseMessage) {
        responseMessageService.processResponse(responseMessage);
    }
}

Теперь я хочу протестировать этот метод. Я хочу убедиться, что этот метод правильно получает сообщения. Пытаюсь создать a Unit test:

@RunWith(SpringRunner.class)
@SpringBootTest
public class ResponseHandlerTest {

    @ClassRule
    public static EmbeddedKafkaRule broker = new EmbeddedKafkaRule(1, false, 5, "response-topic");

    @BeforeClass
    public static void setup() {
        System.setProperty("spring.kafka.bootstrap-servers", broker.getEmbeddedKafka().getBrokersAsString());
    }

    @Test
    public void listen() {
    }
}

Но я не понимаю, что дальше. как я могу протестировать этот метод?


person ip696    schedule 15.04.2019    source источник
comment
Возможный дубликат Как написать модульный тест для @KafkaListener?   -  person eis    schedule 15.04.2019


Ответы (1)


См. этот ответ, чтобы узнать, как это сделать.

Также прочтите ответ Артема Билана на тот же вопрос.

Наконец, вы можете заменить свой ResponseMessageService на фиктивный объект в своем тестовом примере и убедиться, что он был вызван должным образом.

person Gary Russell    schedule 15.04.2019