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

如何在NSubstitute中匹配参数、执行操作并返回指定值?

NSubstitute 链式配置参数匹配、自定义操作与返回值

在NSubstitute中,你完全可以通过链式调用一次性完成参数匹配、执行自定义操作(比如将参数字段加入列表)以及指定返回值,不需要分开配置,写法和FakeItEasy的链式体验一致。

举个具体的例子,假设你有如下接口和模型:

public interface IMyService
{
    bool DoSomething(MyModel param);
}

public class MyModel
{
    public int Id { get; set; }
    public string Data { get; set; }
}

要实现你的需求,代码可以这么写:

var myList = new List<string>();
var service = Substitute.For<IMyService>();

// 链式完成三个需求:匹配参数、执行操作、返回指定值
service.DoSomething(Arg.Is<MyModel>(x => x.Id > 0))
       .Do(call => myList.Add(call.Arg<MyModel>().Data))
       .Returns(true);

细节说明:

  • 参数匹配:用Arg.Is<T>()指定匹配条件,比如这里只匹配Id>0的MyModel实例;如果要匹配任意参数,用Arg.Any<MyModel>()即可。
  • 执行自定义操作:.Do()方法接收一个CallInfo参数,通过call.Arg<T>()可以获取当前调用的参数,进而提取字段加入myList。
  • 指定返回值:.Returns()直接设置方法的返回结果,支持固定值、动态计算值甚至基于参数的返回逻辑。

.Do()和.Returns()的调用顺序不影响最终效果,只要放在参数匹配的后面就行。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.04 06:22:38