我有一个使用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() {
}
}
但是我不明白接下来要做什么。如何测试这种方法?
答案 0 :(得分:1)
请参见this answer,了解一种实现方法。
此外,请阅读Artem Bilan对同一问题的回答。
最后,您可以在测试用例中将ResponseMessageService
替换为模拟对象,并验证它是否按预期被调用。