为什么单元测试模拟总是使用控制器为空

本文关键字:控制器 单元测试 模拟 为什么 | 更新日期: 2023-09-27 18:32:18

想单元测试使用模拟我的数据其实都存储在内存中,为什么总是从控制器响应结果中得到null

这是我的控制器

private readonly IUnitOfWorkAsync _unitOfWorkAsync;
        private readonly IVersionService _versionService;
        public VersionController(IUnitOfWorkAsync unitOfWorkAsync, IVersionService versionService)
        {
            this._unitOfWorkAsync = unitOfWorkAsync;
            this._versionService = versionService;
        }

        public ActionResult Index()
        {
            var versions =  _versionService.Queryable();
            return View(versions);
        }

这是我的单元测试代码:

private Mock<IVersionService> _versionServiceMock;
        private Mock<IUnitOfWorkAsync> _unitOfWorkAsync;
        VersionController objController;
        List<Model.Models.Version> listVersion;
        [TestInitialize]
        public void Initialize()
        {
            _versionServiceMock = new Mock<IVersionService>();
            _unitOfWorkAsync = new Mock<IUnitOfWorkAsync>();
            objController = new VersionController(_unitOfWorkAsync.Object, _versionServiceMock.Object);
            listVersion = new List<Model.Models.Version>() {
             new Model.Models.Version() { AppName="App 1",ObjectState=ObjectState.Added,AuditField=new AuditFields()},
             new Model.Models.Version() { AppName="App 2",AppVersion="1.0",ObjectState=ObjectState.Added,AuditField=new AuditFields()},
             new Model.Models.Version() { AppName="App 3",ObjectState=ObjectState.Added,AuditField=new AuditFields()}
            };
        }
        [TestMethod]
        public void Version_Get_All()
        {
            //Arrange
            _versionServiceMock.Setup(x => x.Query().Select()).Returns(listVersion);
            //Act
            var result = (( objController.Index() as ViewResult).Model) as List<Model.Models.Version>;

        }
为什么

结果总是得到空,如何检查为什么空是得到的。

注意:我在项目控制器中使用此模式。

为什么单元测试模拟总是使用控制器为空

Moq 在模拟时创建自己的接口实现。默认情况下,模拟接口上的所有方法都将返回 null。

试着嘲笑_versionService.Queryable()。喜欢这个:

[TestMethod]
public void Version_Get_All()
{
     //Arrange
    _versionServiceMock.Setup(x => x.Queryable()).Returns(listVersion);
     //Act
    var result = (( objController.Index() as ViewResult).Model) as List<Model.Models.Version>;

}