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

Moq验证Entity Framework Core下Update方法从未被调用的配置问题

解决方法

在MockBehavior.Strict模式下,所有mock对象可能被调用的成员都必须提前配置Setup,否则一旦触发调用就会直接抛出未配置的异常,无法走到后续的Verify校验步骤。你只需为IContentDataStore.Update方法添加对应Setup即可,由于该方法是void类型,无需配置返回值,空Setup就可以满足要求:

配置方式1:精准匹配要验证的参数

如果只允许接收existingRequest实例的调用不触发Strict模式异常,可以直接配置和Verify逻辑参数一致的Setup:

ContentStoreMock.Setup(repo => repo.Update(existingRequest));

配置方式2:允许任意同类型参数的调用

如果想要覆盖所有同类型参数的Update调用,避免Strict模式抛未配置异常,可以匹配任意参数:

// 请将代码中的T替换为existingRequest对应的实际实体类型
ContentStoreMock.Setup(repo => repo.Update(It.IsAny<T>()));
注意事项
  • 配置完Setup后,原有ContentStoreMock.Verify(repo => repo.Update(existingRequest), Times.Never );校验逻辑无需修改,即可正常生效
  • 如果使用了匹配任意参数的Setup,不要修改Verify的参数为It.IsAny<T>(),否则校验逻辑会变成「验证所有Update方法都从未被调用」,和你原始的校验指定实例未被调用的需求不符

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.05 23:15:04