單元測試之模擬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);
}

浙公網安備 33010602011771號