在嘲笑我的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