c# - 错误模拟具有两个参数的方法
问题描述
我有一个存储库,它有这样的方法。
FindFirstOrDefault<TEntity>(Expression<Func<TEntity, bool>> expression, params Expression<Func<TEntity, object>>[] includes)
我的 Mock 设置如下所示:
_repositoryMock.Setup(moq => moq.FindFirstOrDefault(It.IsAny<Expression<Func<Order, bool>>>(), It.IsAny<Expression<Func<Order, object>>[]>()))
我也试过这个:
_repositoryMock.Setup(moq => moq.FindFirstOrDefault(It.IsAny<Expression<Func<Order, bool>>>(), Array.Empty<Expression<Func<Order, object>>>()))
以前,当我对该 FindFirstOrDefault 方法(expression
参数)只有一个参数时,它运行得很好。现在我已经添加了includes
参数,我收到以下错误:
Invalid callback. Setup on method with 2 parameter(s) cannot invoke callback with different number of parameters (1).
为什么我在传递两个参数时收到一条错误消息,提示我只传递了 1 个参数?
解决方案
所以看来我只是忘了更新 Returns 以包含额外的参数。
我的整个设置之前看起来像这样:
_repositoryMock.Setup(moq => moq.FindFirstOrDefault(It.IsAny<Expression<Func<Order, bool>>>()))
.Returns((Expression<Func<Order, bool>> expression =>
{
// RETURN LOGIC
});
使用我的新参数,我更新为:
_repositoryMock.Setup(moq => moq.FindFirstOrDefault(It.IsAny<Expression<Func<Order, bool>>>(), Array.Empty<Expression<Func<Order, object>>>()))
.Returns((Expression<Func<Order, bool>> expression) =>
{
// RETURN LOGIC
});
这导致了我得到的错误。
我真正需要的是:
_repositoryMock.Setup(moq => moq.FindFirstOrDefault(It.IsAny<Expression<Func<Order, bool>>>(), Array.Empty<Expression<Func<Order, object>>>()))
.Returns((Expression<Func<Order, bool>> expression, Expression<Func<Order, object>>[] includes) =>
{
// RETURN LOGIC
});
推荐阅读
- email - 如何使用 Gmail-api 检索动态电子邮件
- java - 如何避免使用@ElementCollection 创建链接表?
- javascript - 汇总和平均数据表中的不同列
- r - 动态列选择和应用条件
- reactjs - 使用引导程序对齐每个项目旁边的项目
- node.js - 如何迭代猫鼬表?
- scala - 将数据帧从 spark 集群写入 cassandra 集群:分区和性能调优
- python - 如何使用 Boto3 Python 在 S3 中创建 zipfile?
- python - 有没有更好的方法在 python 中生成等距地图网格?
- html - 我应该怎么做才能让我的盒子水平对齐?