You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Moq模拟仓储CreateAsync方法返回传入集合失败,返回空IEnumerable求助

问题解决:Moq模拟CreateAsync返回传入的集合

你的模拟代码存在几个问题,导致最终返回空IEnumerable,修正方案如下:

  1. 拼写错误:代码里的enteties是拼写错误,正确类型名应为Entity,同时要保持大小写一致。
  2. 参数类型不匹配:目标方法的第一个参数是IEnumerable<Entity>,但你用It.IsAny<List<Entity>>来匹配,若调用时传入的不是List类型的IEnumerable(比如数组),就会匹配失败,触发Moq的默认返回值(空IEnumerable)。应改成匹配IEnumerable<Entity>。
  3. 可空CancellationToken匹配错误:方法定义的token参数是CancellationToken?(可空类型),但你用It.IsAny<CancellationToken>(非可空)匹配,同样会导致匹配失败。

修正后的完整代码:

repository.Setup(i => i.CreateAsync(It.IsAny<IEnumerable<Entity>>(), It.IsAny<CancellationToken?>()))
          .ReturnsAsync((IEnumerable<Entity> entities, CancellationToken? token) => entities);

如果你的业务场景中,调用CreateAsync时只会传入List<Entity>类型的参数,也可以保留List的匹配,但要确保拼写和参数类型正确:

repository.Setup(i => i.CreateAsync(It.IsAny<List<Entity>>(), It.IsAny<CancellationToken?>()))
          .ReturnsAsync((List<Entity> entities, CancellationToken? token) => entities);

内容的提问来源于stack exchange,提问作者boom325

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.24 07:17:39