我想實現一個擴展方法來初始化我的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上。
UPDATE
我得到它像新的一樣UserRepository()工作。GetMockRepository(),有什麼辦法讓可以作爲一個靜態方法,所以我不這個方法有新的一個UserRepository?
這就是我之前使用它的方式,我只是想我可以把它作爲一個擴展可用方法。 – b3n 2011-02-28 03:33:51