zoukankan      html  css  js  c++  java
  • 单元测试之模拟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);
    }

  • 相关阅读:
    volume 方式使用 Secret【转】
    查看 Secret【转】
    用 k8s 管理机密信息【转】
    MySQL 如何使用 PV 和 PVC?【转】
    【docker问题】Client.Timeout exceeded while awaiting headers
    PV 动态供给【转】
    回收 PV【转】
    NFS PersistentVolume【转】
    PV & PVC【转】
    IO流中的常见问题
  • 原文地址:https://www.cnblogs.com/abccome/p/4395427.html
Copyright © 2011-2022 走看看