You need to enable JavaScript to run this app. 如何用NSubstitute实现save方法首次抛异常、符合条件时二次调用不抛
优惠活动
大模型
产品
解决方案
定价
更多

如何用NSubstitute实现save方法首次抛异常、符合条件时二次调用不抛

NSubstitute Save方法调用逻辑调整方案

核心实现代码

你可以通过计数器记录调用次数,同时新增字段校验逻辑修改原有配置,调整后代码如下:

// 记录Save方法调用次数
int saveInvokeCount = 0;

workItem.When(fake => fake.Save())
    .Do(call => 
    {
        saveInvokeCount++;
        // 首次调用强制抛出异常
        if (saveInvokeCount == 1)
        {
            throw new AggregateException();
        }
        // 非首次调用时校验field值,不符合要求才抛出异常
        if (workItem.field != "OK")
        {
            throw new AggregateException();
        }
        // 满足条件直接返回,不抛出异常
    });

逻辑说明

  • NSubstitute伪造对象的属性默认自带状态存储,业务代码中对workItem.field的赋值会被正常保存,不需要额外配置属性的返回逻辑
  • 你可以在测试执行完成后添加断言Assert.AreEqual(2, saveInvokeCount),验证业务代码确实触发了两次Save调用,覆盖异常重试逻辑
  • 如果需要区分字段大小写匹配规则,自行修改字符串判断逻辑即可。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 08:36:05