コード例 #1
0
        public async Task ProducerConsumerIntegrationTest()
        {
            //arrange
            var car = new Car
            {
                BrandName     = "Jeep",
                Model         = "2017",
                IsSportCar    = true,
                NumberOfDoors = 2
            };

            var message = JsonConvert.SerializeObject(car);

            //producer
            var config            = new ProducerConfiguration();
            var producerConfig    = config.CreateConfig();
            var producer          = config.CreateProducer(producerConfig);
            var producerService   = new ProducerService();
            var deleveredResponse = await producerService.SendMessage(producer, "cars", message);

            Assert.IsNotNull(deleveredResponse);
            Assert.IsNotNull(deleveredResponse.TopicOffset);
            Assert.AreEqual(message, deleveredResponse.Result);
            var carResponse = JsonConvert.DeserializeObject <Car>(deleveredResponse.Result);

            Assert.AreEqual(car.BrandName, carResponse.BrandName);
            Assert.AreEqual(car.Model, carResponse.Model);
            Assert.AreEqual(car.IsSportCar, carResponse.IsSportCar);
            Assert.AreEqual(car.NumberOfDoors, carResponse.NumberOfDoors);

            //Consumer
            var consumerServiceConfig = new ConsumerServiceConfig();
            var consumerConfig        = consumerServiceConfig.CreateConfig();
            var consumerService       = new ConsumerService();
            // CancellationTokenSource cts = new CancellationTokenSource();
            var consumerResult = consumerService.CreateConsumerAndConsumeSingleMessage(consumerConfig, "cars", CancellationToken.None);

            Assert.IsNotNull(consumerResult);

            Assert.IsNotNull(consumerResult.TopicOffset);
            Assert.AreEqual(message, consumerResult.Message);
            var carConsumerResponse = JsonConvert.DeserializeObject <Car>(deleveredResponse.Result);

            Assert.IsNotNull(carConsumerResponse);
            Assert.AreEqual(car.BrandName, carConsumerResponse.BrandName);
            Assert.AreEqual(car.Model, carConsumerResponse.Model);
            Assert.AreEqual(car.IsSportCar, carConsumerResponse.IsSportCar);
            Assert.AreEqual(car.NumberOfDoors, carConsumerResponse.NumberOfDoors);
        }
コード例 #2
0
        public async Task SendMessage_WithValidParameter_ShouldSucceed()
        {
            //arrange
            var car = new Car
            {
                BrandName     = "Jeep",
                Model         = "2017",
                IsSportCar    = true,
                NumberOfDoors = 2
            };

            var message        = JsonConvert.SerializeObject(car);
            var deliveryResult = new DeliveryResult <string, string>
            {
                Message = new Message <string, string>
                {
                    Value = message,
                }
            };

            producerMock.Setup(x => x.ProduceAsync(It.IsAny <string>(), It.IsAny <Message <string, string> >(), CancellationToken.None))
            .Returns(Task.FromResult(deliveryResult));
            var producer = new ProducerService();
            //Act
            var deleveredMessage = await producer.SendMessage(producerMock.Object, "cars", message);

            var carResponse = JsonConvert.DeserializeObject <Car>(deleveredMessage.Result);

            //Asssert
            Assert.IsNotNull(deleveredMessage);
            Assert.AreEqual(deleveredMessage.Result, message);
            Assert.AreEqual(car.BrandName, carResponse.BrandName);
            Assert.AreEqual(car.Model, carResponse.Model);
            Assert.AreEqual(car.IsSportCar, carResponse.IsSportCar);
            Assert.AreEqual(car.NumberOfDoors, carResponse.NumberOfDoors);
        }