如何验证具有在Linq表达式中传递的特定值的Moq方法调用

时间:2018-05-30 12:43:35

标签: c# nunit moq

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

0 个答案:

没有答案