前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >Moq基础(五)

Moq基础(五)

作者头像
黄腾霄
发布2020-06-10 10:59:11
7850
发布2020-06-10 10:59:11
举报
文章被收录于专栏:黄腾霄的博客

上一章我们将讲了伪造属性和事件

这一章我们将参数匹配,回调,和验证


It:参数匹配

It 这个类其实我们已经在前面有所涉及。我们使用It.IsAny<string>()匹配任意字符串。

代码语言:javascript
复制
fakeFoo.Setup(fake => fake.DoSomething(It.IsAny<string>())).Returns((string value)=>value+"makes  me slim");

其实It 的功能非常强大,而且简单易用。直接看API名称就能了解。

这里就简单列出,不载赘述。

  • It.IsAny<T>,匹配指定类型参数
  • It.IsNotNull<T>,匹配指定类型参数,Null除外
  • It.Is<T>(Predicate),匹配指定类型参数,满足Predicate的条件
  • It.IsInRange<T>(T from, T to, Range rangeKind),匹配指定类型参数,满足一定的fromto的范围。 其中Range.Inclusive代表参数在[from,to]之内满足 其中Range.Exclusive代表参数在(from,to)之内满足
  • It.IsIn<T>(IEnumerable<T> items),匹配指定类型参数,在序列内
  • It.IsIn<T>(params T[] items),匹配指定类型参数,在序列内
  • It.IsNotIn<T>(IEnumerable<T> items),匹配指定类型参数,在序列外
  • It.IsNotIn<T>(params T[] items),匹配指定类型参数,在序列外
  • It.IsRegex(string regex),字符串正则匹配
  • It.IsRegex(string regex, RegexOptions options),字符串正则匹配

CallBack:回调

CallBack是指在执行一个Setup的伪造方法时,执行一个回调函数

他的无参数结构是

代码语言:javascript
复制
//无参数
fakeFoo.Setup(fake => fake.DoSomething(It.IsAny<string>()))
    .Returns(true)
    .Callback(() => call++);

他的带参数结构有两种

代码语言:javascript
复制
//普通参数格式
fakeFoo.Setup(fake => fake.DoSomething(It.IsAny<string>()))
    .Returns(true)
    .Callback((string s) => callArgs.Add(s));
//泛型参数格式
fakeFoo.Setup(fake => fake.DoSomething(It.IsAny<string>()))
    .Returns(true)
    .Callback<string>(s => callArgs.Add(s));

当然你还可以选择回调时机

代码语言:javascript
复制
//回调时机
fakeFoo.Setup(fake => fake.DoSomething(It.IsAny<string>()))
    .Callback(() => Console.WriteLine("Before returns"))
    .Returns(true)
    .Callback(() => Console.WriteLine("After returns"));

Verification:验证

验证是Assert环节行为,此时的伪对象作用是Mock

这里也只列出基本功能

  • Verify(expression),验证表达式是否被执行
  • Verify(expression,times),验证表达式的执行次数 其中Times结构体构造可以参见官方文档
  • VerifyGet<T>(expression),验证属性Get是否被执行
  • VerifyGet<T>(expression,times),验证属性Get的执行次数
  • VerifySet<T>(expression),验证属性Set是否被执行
  • VerifySet<T>(expression,times),验证属性Set的执行次数
  • VerifyNoOtherCalls(),处理已经验证的调用外,fake对象没有其他调用 ​

本文会经常更新,请阅读原文: https://xinyuehtx.github.io/post/Moq%E5%9F%BA%E7%A1%80-%E4%BA%94.html ,以避免陈旧错误知识的误导,同时有更好的阅读体验。

本作品采用 知识共享署名-非商业性使用-相同方式共享 4.0 国际许可协议 进行许可。欢迎转载、使用、重新发布,但务必保留文章署名黄腾霄(包含链接: https://xinyuehtx.github.io ),不得用于商业目的,基于本文修改后的作品务必以相同的许可发布。如有任何疑问,请 与我联系

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018-04-18 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • It:参数匹配
  • CallBack:回调
  • Verification:验证
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档