public void ProduceAsyncShouldRethrowProducerException() { // Arrange var topic = "my-topic"; var message = new AgnosticMessage <string> { Key = "msg-id", Payload = "msg-content" }; var producerMock = new Mock <IProducer <string, string> >(); producerMock.Setup(producer => producer.ProduceAsync(topic, It.Is <Message <string, string> >(msg => msg.Key == message.Key))) .ThrowsAsync(new ProduceException <string, string>(new Error(ErrorCode.BrokerNotAvailable), null)); var loggerMock = new Mock <ILogger <KafkaProducerWrapper <string> > >(); using (var kafkaProducerWrapper = new KafkaProducerWrapper <string>(producerMock.Object, loggerMock.Object)) { // Act Func <Task> methodCall = () => kafkaProducerWrapper.ProduceAsync(topic, message); // Assert methodCall.Should().Throw <ProduceException <string, string> >(); } }
public void ProduceAsyncShouldSendMessageToKafkaTopic() { // Arrange var topic = "my-topic"; var message = new AgnosticMessage <string> { Key = "msg-id", Payload = "msg-content" }; var producerMock = new Mock <IProducer <string, string> >(); producerMock.Setup(producer => producer.ProduceAsync(topic, It.Is <Message <string, string> >(msg => msg.Key == message.Key))) .ReturnsAsync(new DeliveryResult <string, string>()); var loggerMock = new Mock <ILogger <KafkaProducerWrapper <string> > >(); // Act using (var kafkaProducerWrapper = new KafkaProducerWrapper <string>(producerMock.Object, loggerMock.Object)) { kafkaProducerWrapper.ProduceAsync(topic, message).Wait(); } // Assert producerMock.Verify(producer => producer.ProduceAsync(topic, It.Is <Message <string, string> >(msg => msg.Key == message.Key)), Times.Once); }