首页 > 解决方案 > 我正在模拟请求但它显示为空?

问题描述

在此处输入图像描述

我正在模拟注册代理用户,但它显示了它的一些属性 Null。

我是新手,我不明白这一点。

我正在尝试制作作为模型的注册代理用户的模拟

[TestMethod]
public async Task ABCreateActionResult_ReturnsBadRequest_Badrequest()
{
    RegisterAgencyUserRequest mock = new Mock<RegisterAgencyUserRequest>().Object;

    var controller = _accountController.RegisterAgencyUser(mock);

    JsonResult viewResult = (JsonResult)await _accountController.RegisterAgencyUser(mock);

}

这是我必须测试的

public async Task<IActionResult> RegisterAgencyUser([FromBody] Models.Request.RegisterAgencyUserRequest request)
{
    JsonContentResult jsonContentResult = new JsonContentResult();
    if (!ModelState.IsValid)
    {
        return BadRequest(ModelState);
    }

    if (string.IsNullOrEmpty(request.InvitationCode) || string.IsNullOrWhiteSpace(request.InvitationCode))
        return Json(new SharedResponse(AppConstants.ServiceReponses.Error, "A user can't be registered without invitation"));

    var invitationDetails = _inviteRepository.GetInvitaionCodeDetails(request.InvitationCode);

    if (invitationDetails.Type != (int)InviteType.Agency)
    {
        return Json(new SharedResponse(AppConstants.ServiceReponses.Error, "Invalid invitation code"));
    }

    //...

标签: c#visual-studiounit-testingmoq

解决方案


您只模拟您正在测试的类的依赖项。所以你不需要模拟 POCO。只需使用如下所示的虚拟数据进行设置:

var model = new RegisterAgencyUserRequest
{
    Address = "Value1",
    AgencyName = "Value2",
    //...
};

并像下面这样使用它:

var controller = _accountController.RegisterAgencyUser(model);

您对该方法的依赖是:

_inviteRepository.GetInvitaionCodeDetails()

因此您需要_inviteRepository在初始化时模拟并将其注入到被测主题控制器中。


推荐阅读