【发布时间】:2011-03-11 17:58:08
【问题描述】:
我正在尝试实现一种扩展方法来为我的 MVC3 应用程序初始化我的 Moq 存储库。我有一个存储库接口:
public interface IRepository<TEntity> : IDisposable where TEntity : class
{
//Methods
}
我有几个实现这个接口的类,例如 UserRepository:
public interface IUserRepository : IRepository<User>
{
//Specific methods for User repository
}
public class UserRepository : EfRepositoryBase<User>, IUserRepository
{
}
EfRepositoryBase 是我的存储库基类,为我的存储库提供通用方法。在我的单元测试中,我想为每种类型的存储库创建一个扩展方法来检索模拟存储库。我尝试像这样添加这个扩展方法:
public static class RepositoryHelpers
{
public static Mock<IRepository<T>> GetMockRepository<T>(this IRepository<T> repository, params T[] items) where T : class
{
Mock<IRepository<T>> mock = new Mock<IRepository<T>>();
mock.Setup(m => m.GetAll()).Returns(items.AsQueryable());
return mock;
}
}
但是这似乎不起作用。我期待使用 UserRepository.GetMockRepository(...) 来检索初始化的模拟存储库,但该方法没有显示在 UserRepository 上。
更新
我让它像 new UserRepository().GetMockRepository() 一样工作,有没有办法让这个方法作为静态方法可用,所以我不必新建 UserRepository?
【问题讨论】:
标签: c# asp.net-mvc-3 moq generics