Ответ 1
Думаю, вам также нужно настроить IDbSet:: Find.
activeLoanMockSet.Setup(m => m.Find(It.IsAny<object[]>()))
.Returns<object[]>(ids => activeLoans.FirstOrDefault(d => d.ID == (int)ids[0]));
По какой-то причине этот код продолжает сбой. Любой, кто может сказать мне, почему:
var activeLoans = new List<ActiveLoan> {
new ActiveLoan{
ID = 1,
CaseType = "STL",
LoanCode = 0
},
new ActiveLoan{
ID = 2,
CaseType = "STL",
LoanCode = 0
},
new ActiveLoan{
ID = 3,
CaseType = "STL",
LoanCode = 0
}
}.AsQueryable();
var activeLoanMockSet = new Mock<DbSet<ActiveLoan>>();
activeLoanMockSet.As<IQueryable<ActiveLoan>>().Setup(m => m.Provider).Returns(activeLoans.Provider);
activeLoanMockSet.As<IQueryable<ActiveLoan>>().Setup(m => m.Expression).Returns(activeLoans.Expression);
activeLoanMockSet.As<IQueryable<ActiveLoan>>().Setup(m => m.ElementType).Returns(activeLoans.ElementType);
activeLoanMockSet.As<IQueryable<ActiveLoan>>().Setup(m => m.GetEnumerator()).Returns(activeLoans.GetEnumerator());
mockContext.Setup(c => c.ActiveLoans).Returns(activeLoanMockSet.Object);
// This is the line that fails
Assert.AreNotEqual(mockContext.Object.ActiveLoans.Find( 1 ), null);
Когда я говорю "fail", я имею в виду, что unit test, что это часть сбоя.
Думаю, вам также нужно настроить IDbSet:: Find.
activeLoanMockSet.Setup(m => m.Find(It.IsAny<object[]>()))
.Returns<object[]>(ids => activeLoans.FirstOrDefault(d => d.ID == (int)ids[0]));