我有一个实现接口的具体类
internal interface ITableAdapter
{
int CustomFill(Dataset dataset, ...);
}
internal interface IEntityRetriever
{
IEntity RetriveEntity();
}
internal class RetriveEntityById: IEntityRetriever
{
private readonly EntityDataSet _entityDataSet = new EntityDataSet();
private readonly ITableAdapter _tableAdapter;
public RetriveEntityById(ITableAdapter tableAdapter, ...)
{
_tableAdatper = tableAdapter;
...
}
public Entity RetriveEntity()
{
var EntityModel = RetriveEntityModel();
...
return EntityModel.Entity;
}
private EntityDataSet RetriveEntityModel()
{
_tableAdapter.CustomFill(_entityDataSet, ...);
return _entityDataSet;
}
}
我正在尝试对此类进行单元测试,但无法弄清楚如何模拟填充具体类的私有属性的
CustomFill
方法的行为。
var adapter = new Mock<ITableAdapter>();
adapter.Setup(x=>x.CustomFill(It.IsAny<DataSet>(), ...)).Returns(1)
我最终在设置 lamda 函数的方法中编辑了私有属性
var adapter = new Mock<ITableAdapter>();
adapter.Setup(x=>x.CustomFill(It.IsAny<DataSet>(), ...))
.Returns((Dataset ds, ..) =>
{
var row = ds.AddRow(...);
return 1
});