在嘲笑我的ApplictionDbContext
時,我在方法AddOrUpdate
上遇到了錯誤。無法調用公共實例方法AddOrUpdate,嘲諷
DbSet
在上下文中是虛擬的。
在測試方法:
this.db.ExpensesDocuments.AddOrUpdate(doc);
我的測試方法:
[Fact]
public void AddOrUpdateExpenses_Success()
{
// arrange
var mockSet = new Mock<DbSet<ExpensesDocument>>();
var mockContext = new Mock<ApplicationDbContext>();
mockContext.Setup(m => m.ExpensesDocuments).Returns(mockSet.Object);
var provider = new ExpensesProvider(mockContext.Object);
// act
bool result = provider.AddOrUpdateExpenses(new ExpensesDocument());
// assert
}
錯誤:
Result Message: System.InvalidOperationException : Unable to call public, instance method AddOrUpdate on derived IDbSet type 'Castle.Proxies.DbSet`1Proxy'. Method not found.
我使用Moq4
框架嘲諷和xUnit
進行測試。
只要您的代碼顯示,您似乎沒有設置該方法。這可能嗎? – Chris
'AddOrUpdate'是一個擴展方法,不是'DbSet'的方法。請參閱https://msdn.microsoft.com/en-us/library/hh846520(v=vs.103).aspx您無法以此方式攔截它。嘗試重寫測試。 –
我知道這是擴展方法,但我該如何處理? – Nerf