测试设置
当测试命中控制器内部的方法时,模拟给出空对象
我的控制器的构造函数有两个我嘲笑的依赖项。在运行CheckOut测试时,结果中将提供空对象。我正在使用AutoMapper在模型对象和业务之间进行映射
[Fact]
public void CheckOutsomethingsTest()
{
Mock<ICheckoutService> checkoutServiceMock = new Mock<ICheckoutService>();
Mock<IMapper> mapperMock = new Mock<IMapper>();
checkoutServiceMock.Setup(c => c.Checkoutsomethings(new CheckOutsomethingsInput
{
SecretKey = "SecureKey",UserId = 100,SomethingIds = new List<int> { 10001,1002,1003 }
}))
.Returns<List<CheckedOutsomething>>((o) => new List<CheckedOutsomething>
{
new CheckedOutsomething { Id = 10001,Remarks = "Success" },new CheckedOutsomething { Id = 10002,Remarks = "Success" }
});
var configuration = new MapperConfiguration(cfg =>
{
cfg.AddSomething(new AutoMapperBusinessToEntitiesSomething());
cfg.AddSomething(new AutoMapperModelsToBusinessSomething());
});
var mapper = new Mapper(configuration);
var controller = new SomethingsController(checkoutServiceMock.Object,mapper);
var result = controller.CheckOut(
new CheckOutsomethingInputModel
{
UserId = 100,10002,10003 }
});
Assert.IsType<OkObjectResult>(result.Result);
Assert.Equal(2,result.Value.Count);
}
服务 构造函数
public ProfilesController(ICheckoutService checkoutService,IMapper mapper)
{
this.checkoutService = checkoutService;
this.mapper = mapper;
}
方法
[HttpPost]
[Route("checkout")]
public actionResult<List<CheckedOutsomethingModel>>
CheckOut([FromBody] CheckOutsomethingInputModel checkoutInput)
{
if (!ModelState.IsValid)
{
return BadRequest(ModelState);
}
var input = mapper.Map<CheckOutsomethingsInput>(checkoutInput);
var output = mapper.Map<List<CheckedOutsomethingModel>>
(checkoutService.Checkoutsomethings(input));
return Ok(output);
}
我无法弄清楚我在做什么