[英]Moq mocked DbContext returns null ObjectContext
我有一個自定義DisconnectedDbContext
用於Web應用程序中的自我狀態跟蹤POCO。
public abstract class DisconnectedDbContext : DbContext
{
protected DisconnectedDbContext()
{
var objAdapterContext = ((IObjectContextAdapter)this).ObjectContext;
}
}
我將其細分為一些單元測試:
public class FruityContext : DisconnectedDbContext
{
public virtual DbSet<FruitBowl> FruitBowls { get; set; }
public virtual DbSet<Fruit> Fruits { get; set; }
}
並在TestMethod
使用Moq
,如下所示:
[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
不為null,但對於var mo
則為null。 對於非模擬對象,我需要objAdapterContext
不為null,因為我可以使用它來處理ObjectContext
的ObjectMaterialized
事件。
因此,Moq包裝器正在改變我的代碼的行為。 有什么我可以做的嗎?
用這個:
mockSet.CallBase = true;
mockContext.CallBase = true;
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.