单元测试之模拟Mock



先看下面一段代码:

public class DataService : IDataService
{
        private readonly IDataRespository _dataRespository;
        public DataService(IDataRespository dataRespository)
        {
            _dataRespository = dataRespository;
        }

        public int GetCount()
        {
            var list = _dataRespository.GetList();
            return list.Count;
        }
}


其中有 GetCount() 方法是为获取列表的 Count,我们为这个方法写单元测试代码;GetCount() 中获取列表是调用了 IDataRespository 中的 GetList() 方法,此方法中的具体实现、返回的数据量我们都一无所知,所以为了测试 GetCount() 逻辑的正确性,必须对 GetList() 方法进行模拟。
1. 项目中引入Moq.dll
2. 具体如下

[Fact]
public void TestGetList()
{
            // 为 IDataRespository 创建模拟对象
            var mockDataRespository = new Mock<IDataRespository>();
            // 设置模拟对象的 GetList() 方法并设置返回值
            mockDataRespository.Setup(p => p.GetList()).Returns(() =>
                {
                    var list = new List<DataModel> {new DataModel()};

                    return list;
                });

            IDataService dataService = new DataService(mockDataRespository.Object);

            var actual = dataService.GetCount();
            const int expect = 1;

            Assert.Equal(expect, actual);
}

转载于:https://www.cnblogs.com/abccome/p/4395427.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值