Jarwis
@Jarwis
ASP.NET разработчик

Moq и Autofac. Почему возникают проблемы при имитации DbContext?

Перешел недавно с Castle.Windsor на Autofac и возникла проблема с unit-тестами, а именно при создании mock DbContext.

Здесь все работает нормально:
var set = new Mock<IDbSet<Company>>();
            set.Setup(c => c.GetEnumerator()).Returns(data.GetEnumerator());
            set.Setup(c => c.ElementType).Returns(data.ElementType);
            set.Setup(c => c.Expression).Returns(data.Expression);
            set.Setup(c => c.Provider).Returns(data.Provider);

            var context = new Mock<MyDbContext>();
            context.Setup(c => c.Companies).Returns(set.Object);


Но как только я добавляю имитацию метода Remove, в коде выбрасывается NullReferenceException, что вроде как MyDbContext.Companies - null.
context.Setup(c => c.Companies.Remove(It.IsAny<Company>()))
                .Returns<Company>(c => _data.Remove(c) ? c : null);


Добавляю это прямо под первым листингом.

Что это? Куда копать и как решить? Это я неправильно использую Moq или что-то ещё? Потому что с Castle.Windsor таких проблем не было.
  • Вопрос задан
  • 2302 просмотра
Пригласить эксперта
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы