有三个类如下:
public interface IRepository1{}
public interface IService{
public void Function1(List<int> ids);
public void Function2(T xxInfo)
}
public class Service{
public IRepository1 Repository1 {get;set;}
public void Function1(List<int> ids)
{
var list = this.Repository1.GetList(ids) //这个是可以Mock的
foreach(var item in list){
this.Function2(item) //这个应该怎么模拟
}
}
}
单元测试的时候,我实例化一个Service,然后Mock一个IRepository1,来伪造GetList,返回模拟的数据
但是,后续循环调用了Service.Function2()
我怎么捕获Function2()的内容?替换里面的运行代码?
我用的是Moq
//arrange
Service service = new Service();
var mockRepository1 = new Mock<IRepository1>();
mockRepository1.Setup().Returns();
service.IRepository1 = mockRepository1.Object()
//act
service.Function1(new List<int>{1,2});
//assert