Тестирование Xunit и тип возврата MOQ IActionResult - PullRequest
0 голосов
/ 16 октября 2018

Это функция контроллера, которую я тестирую ...

   [HttpPost]
    public IActionResult Send([FromBody] MessageViewModel messageViewModel)
    {
        try
        {
            if (ModelState.IsValid)
            {
                var recipients = messageViewModel.To.Select(p => new Recipient { MobileNumber = p.MobileNumber, EmailAddress = p.EmailAddress });

                Message message = new Message
                {
                    To = recipients,
                    Subject = messageViewModel.Subject,
                    Body = messageViewModel.Body
                };

                var result = this.notifications.Send(message);

                if(result)
                {
                    this.logger.LogInformation(LoggingEvents.SendItem, $"Item with subject {messageViewModel.Subject} has been sent");
                    return this.Ok(result);
                }
                else
                {
                    this.logger.LogError(LoggingEvents.SendItemFail, $"Failure to send the item with subject {messageViewModel.Subject}");
                    return BadRequest();
                }
            }
            else
            {
                this.logger.LogError(LoggingEvents.SendItemFail, $"Invalid input. Fail to send the item with subject {messageViewModel.Subject}");
                return BadRequest();
            }
        }
        catch (Exception ex)
        {
            this.logger.LogError(LoggingEvents.SendItemFail, $"Something went wrong: {ex}");
            return this.StatusCode(StatusCodes.Status500InternalServerError);
        }
    }

Это мои коды тестирования xunit.

    public class Send
    {
        [Fact]
        public void Should_ReturnOk_When_To_PropertyIsNull()
        {
            var mock_notificationsController = new Mock<NotificationsController>();

            mock_notificationsController
                .Setup(m => m.Send(It.IsAny<MessageViewModel>()))
                .Returns();


        }

        public MessageViewModel GetMessageViewModel()
        {
            List<RecipientViewModel> recipients = new List<RecipientViewModel>();
            recipients.AddRange(new[]
            {
                new RecipientViewModel
                {
                    EmailAddress = "randomdummysender16",
                    MobileNumber = "639292820947"
                },
            });

            var message = new MessageViewModel()
            {
                To = recipients,
                Subject = "Test Subject",
                Body = null
            };

            return message;
        }
    }

Я не знаю, что вернуть, явведите BadRequestResult, но в нем говорится, что «BadRequestResult» - это тип, который недопустим в данном контексте.

Не получается найти надежную документацию или руководство по модульному тестированию вашего контроллера, есть ли у кого-нибудь источник?

...