c# - 如何验证具有在 Linq 表达式中传递的特定值的 Moq 方法调用
问题描述
我正在尝试验证Delete
on myDomainContext
是否已使用包含特定值的表达式进行调用。因此,简单的人为示例-真实代码:
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
?
解决方案
推荐阅读
- c - 错误:变量具有初始化程序但类型 c 不完整
- flutter - 颤动中的时间选择器确定按钮导航
- python - 在 Eve 中创建非收藏资源
- sql - SQL 只有在表不为空时才执行过程?
- react-native - 提供给图像的道具来源无效
- reactjs - Set-Cookie 来自服务器的响应,但不存储在存储 cookie 中
- python - Python GmailAPI OAuth2 要求访问 SSH 服务器连接上的 URL 时出现问题
- ssl - WSO2 API MANAGER 更改不安全
- php - openssl_decrypt 是否在 Ubuntu 上运行的 PHP 上使用任何网络调用?
- asynchronous - 在 OCaml 中使用 Async 编写 TCP 服务器/客户端