У меня есть пользовательский DisconnectedDbContext
для использования с POCOs для отслеживания состояния пользователя в веб-приложении.Moq mocked DbContext возвращает null ObjectContext
public abstract class DisconnectedDbContext : DbContext
{
protected DisconnectedDbContext()
{
var objAdapterContext = ((IObjectContextAdapter)this).ObjectContext;
}
}
I подкласс это в течение некоторого модульного тестирования:
public class FruityContext : DisconnectedDbContext
{
public virtual DbSet<FruitBowl> FruitBowls { get; set; }
public virtual DbSet<Fruit> Fruits { get; set; }
}
И используя Moq
в TestMethod
, как показано ниже:
[TestMethod]
public void CreateAFruityContext()
{
var dbc = new FruityContext();
Assert.IsNotNull(dbc);
var mockSet = new Mock<DbSet<FruitBowl>>();
var mockContext = new Mock<FruityContext>();
mockContext.Setup(m => m.FruitBowls).Returns(mockSet.Object);
var mo = mockContext.Object;
Assert.IsNotNull(mo);
}
Теперь это не фактическое TestMethod
так что я не хочу отвлечься от этого.
Моя проблема заключается в том, что для создания var dbc
в этом методе objAdapterContext
в вызове конструктора не является нулевым, однако для var mo
он равен нулю. Мне нужно, чтобы objAdapterContext
не был нулевым, как и для не издевавшихся объектов, потому что я использую это для обработки события ObjectMaterialized
ObjectContext
.
Таким образом, оболочка Moq меняет поведение моего кода. Что-то я могу с этим поделать?