В настоящее время я создаю DbSet, используя:
//Helper Function in another file
public static DbSet<T> MockDbSet<T>(params T[] items) where T : class
{
IEnumerable<T> ts = items;
var mock = new Mock<DbSet<T>>();
mock.As<IQueryable<T>>().Setup(x => x.GetEnumerator()).Returns(ts.GetEnumerator());
return mock.Object;
}
И я звоню, используя:
Answer[] sampleAnswers = new Answer[]
{
new Answer() { Id = 4, QuestionId = 1, SurveyId = 4 },
new Answer() { Id = 5, QuestionId = 2, SurveyId = 4 },
new Answer() { Id = 6, QuestionId = 3, SurveyId = 4 },
new Answer() { Id = 7, QuestionId = 4, SurveyId = 5 }
};
var mockAnswers = Helper.MockDbSet(sampleAnswers);
context.Setup(c => c.Answers).Returns(mockAnswers);
var count = context.Object.Answers.Count();
Когда я попадаю в context.Object.Answers.Count (), я получаю исключение нулевого указателя. Тем не менее, когда я запускаю foreach для context.Object.Answers, я могу получить каждый ответ в порядке. Мне чего-то не хватает, что мне надо издеваться? Я знаю, что не могу издеваться над методами расширения.