我一直在試圖弄清楚如何單元測試我的應用程序,但我不太明白如何將所有東西放在一起。ASP.NET MVC,知識庫,工作單元和實體框架單元測試
我遵循John Papa關於PluralSight(SPA)的教程,以完全相同的方式構建了我的模型,存儲庫和工作單元。不幸的是,他沒有提供任何關於我們如何進行單元測試的例子。
我已經和Moq玩過,發現網上很少有鏈接解釋如何這樣做,但不幸的是我無處可去。
一些代碼來提供上下文:
public interface IRepository<T> where T : class
{
IQueryable<T> GetAll();
T GetById(int id);
void Add(T entity);
void Update(T entity);
void Delete(T entity);
void Delete(int id);
}
public interface IFeedbackRepository : IRepository<Feedback>
{
IQueryable<Feedback> GetByFeedbackFor(int id);
}
public class FeedbackRepository : EFRepository<Feedback>, IFeedbackRepository
{
public FeedbackRepository(WebAppDbContext context) : base(context) { }
public IQueryable<Feedback> GetByFeedbackFor(int id)
{
return DbSet.Where(f => f.FeedbackForId == id);
}
}
public interface IWebAppUow
{
void Commit();
IFeedbackRepository Feedbacks { get; }
}
public void TestMethod1()
{
Mock<IWebAppUow> mockUnitOfWork = new Mock<IWebAppUow>();
// THEN ??
}
編輯:我發現這個鏈接(http://msdn.microsoft.com/en-us/data/dn314429.aspx)解釋如何做,而是直接作用於DbSet。如果有人能夠解釋我們如何修改這個例子來使用UoW和Repository模式,那將是隆重的!
您需要模擬'IWebAppUow'如果你要測試一些代碼,使用它。所以很難回答你的問題,而沒有看到你想測試的實際代碼。 –
比方說,我已經在我的FeedbackRepository如下: 公衆反饋GetByIds(INT feedbackForId,詮釋feedbackFromId) { 回報DbSet.FirstOrDefault( F => f.FeedbackForId == feedbackForId && f.FeedbackFromId == feedbackFromId ); } – teh0wner
然後你可能想嘲笑你的倉庫。 –