Я пытаюсь создать модульный тест для своего сервиса с использованием имитируемого DbContext. Я создал интерфейс IDbContext со следующими функциями:
public interface IDbContext : IDisposable
{
IDbSet Set() where T : class;
DbEntityEntry Entry(T entity) where T : class;
int SaveChanges();
}
Мой реальный контекст реализует этот интерфейс IDbContext и DbContext.
Теперь я я пытаюсь имитировать IDbSet в контексте, поэтому вместо этого он возвращает List.
[TestMethod]
public void TestGetAllUsers()
{
// Arrange
var mock = new Mock();
mock.Setup(x => x.Set())
.Returns(new List
{
new User { ID = 1 }
});
UserService userService = new UserService(mock.Object);
// Act
var allUsers = userService.GetAllUsers();
// Assert
Assert.AreEqual(1, allUsers.Count());
}
Я всегда получаю эту ошибку при .Returns:
The best overloaded method match for
'Moq.Language.IReturns.Returns(System.Func)'
has some invalid arguments
Подробнее здесь: https://stackoverflow.com/questions/259 ... t-with-moq