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

使用Spring.Mocking时,DSharp.Testing.Mock对应语法的等价写法是什么?

DSharp.Testing.Mock 转 Spring.Mocking 的等价语法

针对你提到的两种DSharp.Testing.Mock用法,Spring.Mocking对应的等价实现如下:

1. 限定返回值的调用次数(对应 WillReturn(1).Exactly(2))

在Spring.Mocking中,需通过Expect.Call定义调用期望,结合Repeat.Times()指定调用次数,再用Return()设置返回值,最后调用Replay()激活Mock:

var myMock = new Mock<IMyTargetInterface>();
// 等价于 DSharp 的 FMyMock.Setup.WillReturn(1).Exactly(2).WhenCalling....
Expect.Call(myMock.Object.TargetMethod())
      .Repeat.Times(2)
      .Return(1);
myMock.Replay();

2. 限定自定义逻辑的执行次数(对应 WillExecute.Exactly(2))

如果需要指定方法被调用指定次数时执行自定义逻辑,可使用Do()方法结合Repeat.Times():

var myMock = new Mock<IMyTargetInterface>();
// 等价于 DSharp 的 FMyMock.Setup.WillExecute.Exactly(2).WhenCalling....
Expect.Call(myMock.Object.TargetMethod())
      .Repeat.Times(2)
      .Do(new Action(() => 
      {
          // 这里编写你的自定义执行逻辑
      }));
myMock.Replay();

补充说明

Spring.Mocking的Mock工作流程和DSharp略有差异:需要先通过Expect.Call声明期望的调用行为,配置次数、返回/执行逻辑后,必须调用Replay()让Mock切换到"可响应调用"的状态,之后才能使用Mock对象。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.14 10:24:50