我正在模拟请求但它显示为 Null?
I am Making Mock of request But it showing Null?
我正在模拟注册代理用户,但它显示了它的一些属性 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"));
}
//...
您需要在 mock 上设置一些东西,您的代码只会创建一个空对象。
var mock = new Mock<RegisterAgencyUserRequest>();
mock.Setup(x => x.Address).Returns(() => "some address");
RegisterAgencyUserRequest request = mock.Object;
编辑:Azhar Khorasany 的回答解释了应该如何完成,不是模拟 POCO,而是模拟您在测试中使用的 service/repository。
您只模拟对您正在测试的 class 的依赖。所以你不需要模拟 POCO。只需使用如下虚拟数据进行设置:
var model = new RegisterAgencyUserRequest
{
Address = "Value1",
AgencyName = "Value2",
//...
};
并像下面这样使用它:
var controller = _accountController.RegisterAgencyUser(model);
您对该方法的依赖是:
_inviteRepository.GetInvitaionCodeDetails()
所以你需要模拟 _inviteRepository
并在初始化时将其注入到被测对象控制器中。
我正在模拟注册代理用户,但它显示了它的一些属性 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"));
}
//...
您需要在 mock 上设置一些东西,您的代码只会创建一个空对象。
var mock = new Mock<RegisterAgencyUserRequest>();
mock.Setup(x => x.Address).Returns(() => "some address");
RegisterAgencyUserRequest request = mock.Object;
编辑:Azhar Khorasany 的回答解释了应该如何完成,不是模拟 POCO,而是模拟您在测试中使用的 service/repository。
您只模拟对您正在测试的 class 的依赖。所以你不需要模拟 POCO。只需使用如下虚拟数据进行设置:
var model = new RegisterAgencyUserRequest
{
Address = "Value1",
AgencyName = "Value2",
//...
};
并像下面这样使用它:
var controller = _accountController.RegisterAgencyUser(model);
您对该方法的依赖是:
_inviteRepository.GetInvitaionCodeDetails()
所以你需要模拟 _inviteRepository
并在初始化时将其注入到被测对象控制器中。