Я выполнил ответ here, чтобы создать интерфейс для DbContext в структуре сущности. Проблема в том, что я понятия не имею, как использовать его для модульного теста. Мой контроллер, который я пытаюсь проверить, имеет два конструктора. У одного нет параметров и задается переменная экземпляра IDbContext для нового DbContext. Другой принимает IDbContext и устанавливает ту же самую переменную экземпляра. Метод я тестирую просто делает этоКак насмехаться над интерфейсом для фреймворка сущности?
return context.EntitySet<question>().ToList();
Ниже мой провал попытки использовать Moq и проверить работу контроллера. Я ничего не изменил в интерфейсе или частичном классе, указанном в ответе. Может, мне нужно что-то добавить?
Mock<IDbContext> mockContext = new Mock<IDbContext>();
question TestQuestion = new question {
Id = 1,
ToAsk = "Did this test work?"
};
mockContext.Object.EntitySet<question>().Add(TestQuestion);
QuestionsController controller = new QuestionsController(mockContext.Object);
List<DHT.Entity.Models.question> questions = controller.Get();
Assert.AreEqual(questions.Count, 1);
Я довольно новичок в .NET и C#, поэтому, если я делаю все совершенно неправильно, дайте мне знать. Подход в ссылке, которую я дал, выглядел проще, чем реализация целого шаблона репозитория. Я просто пытаюсь найти самый простой способ модульного тестирования моего кода.
усилию хороший инструмент модульного тестирования для EF. – Shawn
Спасибо Шон, я должен посмотреть на это. Это выглядит многообещающе. – user2987995