Я пытаюсь проверить, что Delete
на моем DomainContext
вызвано с выражением, содержащим определенное значение.Итак, простой надуманный пример - реальный код:
DomainContext.Delete<Entity>(x => x.Id == id);
Тестовый код:
DomainContext = new Mock<DomainContext>();
DomainContext.Setup(x => x
.Delete<Entity>(
It.Is<System.Linq.Expressions.Expression<Func<Entity, bool>>>
(predicate => predicate == x => x.Id == id)
).Verifiable();
// act
DomainContext.Verify();
Очевидно, что не сработает, потому что он пытается сравнить два предиката по ссылке - и может даже не сработатьоценивать переменную id
с одной или обеих сторон!
Можно ли как-нибудь написать предикат (что-то вроде It.HasProperty
?!), чтобы заменить predicate == x => x.Id == id
, чтобы проверить, что есть вызовпроверьте, что предикат был вызван с Id == the ID I'm expecting
?