Xunit测试和MOQ IActionResult返回类型

时间:2018-10-16 17:08:17

标签: c# asp.net-core moq xunit

这是我正在测试的控制器功能...

   [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'是一种类型,在给定的上下文中无效。

我似乎找不到可靠的文档或指南,无法对控制器进行单元测试,有人来吗?

0 个答案:

没有答案