NSubstitute完全手册(十)清理已收到的调用

简介:

通过使用 ClearReceivedCalls() 扩展方法,可以使替代实例忘记先前的所有调用。

比如说我们有一个 ICommand 接口,我们想让 OnceOffCommandRunne r接收一个 ICommand 然后仅执行一次。

复制代码
 1     public interface ICommand
 2     {
 3       void Execute();
 4     }
 5 
 6     public class OnceOffCommandRunner
 7     {
 8       ICommand command;
 9       public OnceOffCommandRunner(ICommand command)
10       {
11         this.command = command;
12       }
13       public void Run()
14       {
15         if (command == null) return;
16         command.Execute();
17         command = null;
18       }
19     }
复制代码

如果我们为 ICommand 创建替代,则我们可以其在第一运行时即被调用,然后忘记之前的所有调用,之后再确定其没有被再次调用。

复制代码
 1     [TestMethod]
 2     public void Test_ClearReceivedCalls_ForgetPreviousCalls()
 3     {
 4       var command = Substitute.For<ICommand>();
 5       var runner = new OnceOffCommandRunner(command);
 6 
 7       // 第一次运行
 8       runner.Run();
 9       command.Received().Execute();
10 
11       // 忘记前面对command的调用
12       command.ClearReceivedCalls();
13 
14       // 第二次运行
15       runner.Run();
16       command.DidNotReceive().Execute();
17     }
复制代码

ClearReceivedCalls() 不会清理通过 Returns() 为替代实例设定的返回值。如果我们需要这么做,则可通过再次调用 Returns() 来替换之前指定的值的方式来进行。

NSubstitute 完全手册









本文转自匠心十年博客园博客,原文链接:http://www.cnblogs.com/gaochundong/archive/2013/05/22/nsubstitute_clearing_received_calls.html,如需转载请自行联系原作者
目录
相关文章
|
供应链 前端开发
阿里成立数据智能新公司,瓴羊的独立始末
(转载报道媒体:晚点LatePost)推动瓴羊形成的过程中,阿里管理层选择了更激进、整合度更高的方案,选择了多平台、多云的定位。中国互联网发展二十多年,从开放走向封闭,或主动或被动,现在它正重新走向开放,这是大势所趋。
阿里成立数据智能新公司,瓴羊的独立始末
|
7月前
|
JSON 监控 API
1688商品列表API接口指南
1688 商品列表 API 可帮助开发者和商家获取商品基本信息(如 ID、名称、价格等)、支持筛选排序(类目、价格、销量等条件)、分页查询及指定店铺商品获取,便于商品管理与竞品分析。调用流程包括:注册账号创建应用以获取 App Key 和 App Secret、生成签名确保请求合法性、构造请求参数(含 app_key、sign 等)、发送 HTTP 请求并处理 JSON 响应数据。
277 19
|
10月前
|
XML JSON JavaScript
HttpGet 请求的响应处理:获取和解析数据
HttpGet 请求的响应处理:获取和解析数据
|
11月前
|
监控 并行计算 搜索推荐
量子计算与医疗健康:个性化治疗的未来
量子计算以其强大的并行处理能力,正在医疗健康领域引发革命,尤其是在个性化治疗方面。本文探讨了量子计算在高效处理医疗数据、精确模拟生物分子、优化医疗资源分配等方面的应用,以及面临的挑战和未来前景。
|
11月前
|
运维 负载均衡 Ubuntu
自动化运维的利器:Ansible入门与实践
【10月更文挑战第31天】在当今快速发展的信息技术时代,高效的运维管理成为企业稳定运行的关键。本文将引导读者了解自动化运维工具Ansible的基础概念、安装步骤、基本使用,以及如何通过实际案例掌握其核心功能,从而提升工作效率和系统稳定性。
|
SQL 关系型数据库 分布式数据库
PolarDB Proxy配置与优化:提升数据库访问效率
PolarDB是阿里云的高性能分布式数据库,PolarDB Proxy作为关键组件,解析并转发SQL请求至集群。本文概览PolarDB Proxy功能,包括连接池管理、负载均衡及SQL过滤;并提供配置示例,如连接池的最大连接数与空闲超时时间设置、一致哈希路由及SQL安全过滤规则。最后探讨了监控调优、查询缓存及网络优化策略,以实现高效稳定的数据库访问。
302 2
|
人工智能 安全 自动驾驶
人工智能浪潮下的隐私保护:挑战与策略
本文旨在探讨人工智能技术发展对个人隐私保护所带来的挑战,并提出相应的应对策略。通过分析当前人工智能应用中数据收集和处理的常见模式,揭示其对个人隐私的潜在威胁。同时,结合最新的法律法规和技术手段,提出一系列隐私保护措施,旨在平衡技术创新与个人权益的保护。
588 0
|
XML 存储 文件存储
LabVIEW使用自定义模板和示例项目来开发LabVIEW项目
LabVIEW使用自定义模板和示例项目来开发LabVIEW项目
156 0
|
存储 算法 内存技术
多媒体系统简介
一、多媒体系统简介 多媒体系统是指能够处理和展示多种媒体信息的计算机系统。它可以处理和播放音频、视频、图像等多种形式的媒体数据,并提供交互式的操作和用户界面。多媒体系统广泛应用于娱乐、教育、广告、通信等领域。 多媒体系统通常由以下几个组成部分构成: 1. 媒体输入设备:用于将外部的媒体数据输入到计算机系统中,如麦克风、摄像头、扫描仪等。 2. 媒体处理软件:用于对媒体数据进行处理和编辑的软件,如音频编辑软件、视频编辑软件、图像处理软件等。 3. 媒体存储设备:用于存储媒体数据的设备,如硬盘、光盘、闪存等。 4. 媒体输出设备:用于将处理后的媒体数据输出到外部设备或显示器上,如音箱、显示器、投影
619 0
|
Web App开发 JavaScript 前端开发
网页调试之debugger原理与绕过
当我们调试JS的时候,时常会遇见无限debugger。无限debugger的原理是什么呢?它在何时触发?如何绕过?
1571 0
网页调试之debugger原理与绕过