簡體   English   中英

Moq模擬的DbContext返回null

[英]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,因為我可以使用它來處理ObjectContextObjectMaterialized事件。

因此,Moq包裝器正在改變我的代碼的行為。 有什么我可以做的嗎?

用這個:

mockSet.CallBase = true;
mockContext.CallBase = true;

暫無
暫無

聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM