我正在寻找设置一个假存储库。
public class FooRepo {
public FutureFoo<Foo> GetById(int id) {
var foo = new Foo();
return new FutureValue(foo);
}
public FutureQuery<Foo> GetByCategory(int categoryId) {
var foos = new[] { new Foo(), new Foo() new Foo() };
return //what goes here?
}
}
这样做的目的是编写依赖于数据的测试,而不依赖于任何数据库连接。这对于该类型来说非常简单,FutureValue<>
因为它提供了一个接受直接对象的构造函数。然而,构造函数FutureQuery<>
接受参数IQueryable query, Action loadAction
我可以忽略loadAction
吗?
如:new FutureQuery<Foo>(foos.AsQueryable(), () => { });
或者解决这个问题的正确方法是什么?
强制解决方案:
(FutureQuery<Foo>) Activator.CreateInstance(typeof(FutureQuery<Foo>),
BindingFlags.NonPublic | BindingFlags.Instance, null,
new object[] { foos.AsQueryable(), null }, null);