我正在尝试验证我的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
调用?