Я пытался выяснить, как выполнить модульное тестирование моего приложения, но я не совсем понимаю, как все сочетается.ASP.NET MVC, репозиторий, блок работы и тестирование модуля инфраструктуры Entity
Я следовал руководству Джона Папы по 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 ??
}
Edit: Я нашел эту ссылку (http://msdn.microsoft.com/en-us/data/dn314429.aspx), который объясняет, как это сделать, но работает непосредственно на DbSet. Если кто-то может объяснить, как мы можем изменить этот пример, чтобы использовать шаблон UoW и Repository, который был бы грандиозным!
Вам нужно высмеять 'IWebAppUow', если вы собираетесь протестировать код, который его использует. Поэтому трудно ответить на ваш вопрос, не видя фактического кода, который вы хотите проверить. –
Скажем, у меня есть следующие в моей FeedbackRepository: общественности Обратная связь GetByIds (интермедиат feedbackForId, внутр feedbackFromId) { возвращение DbSet.FirstOrDefault ( ф => f.FeedbackForId == feedbackForId && f.FeedbackFromId == feedbackFromId ); } – teh0wner
Тогда вы, вероятно, захотите высмеять свой репозиторий. –