Я использую .net 4 с C #, EntityFramework 4 и Moq 4. Я пытаюсь смоделировать мой UnitOfWork, репозиторий и, наконец, вызов метода.
Вот код, который я используювозникли проблемы с
var unitOfWorkMock = new Mock<UnitOfWork>();
var cFieldRepositoryMock = new Mock<IRepository<CField>>();
System.Linq.Expressions.Expression<Func<CField, bool>> query = (x) => x.CID == c && x.FID == parentFID;
cFieldRepositoryMock.Setup(x => x.GetFirst(query));
Подпись метода для GetFirst:
T GetFirst(Expression<Func<T, bool>> query = null,
Func<IQueryable<T>, IOrderedQueryable<T>> orderBy = null);
CField:
public class CField
{
public CField()
{
//do stuff
}
public int ID { get; set; }
public int FID { get; set; }
public int CID { get; set; }
}
То, что я ожидаю, произойдет: я ожидаю, что явызовите метод GetFirst моего cFieldRepositoryMock, он сопоставит лямбда-выражение, которое я передаю, с выражением, которое я определил в программе установки.
Что происходит: я получаю ошибку компилятора в назначении программы установки: «Дерево выражений можетне содержит вызов или вызов, который использует необязательные аргументы "
Я явно что-то делаю не так, я просто не уверен, что.Любой совет приветствуется, я новичок в модульном тестировании.
Спасибо!AFrieze