加入收藏 | 设为首页 | 会员中心 | 我要投稿 李大同 (https://www.lidatong.com.cn/)- 科技、建站、经验、云计算、5G、大数据,站长网!
当前位置: 首页 > 百科 > 正文

c# – 根据其他方法输入返回值

发布时间:2020-12-16 02:02:19 所属栏目:百科 来源:网络整理
导读:我试图模拟一个非常简单(简化)的接口,它基本上是一个Cache服务的接口: public interface ICache{ T GetT(String key); T SetT(String key,T value); // return T on success or null on fail} 我想用以下方式使用Moq来模拟这个: 如果我使用尚未设置的密钥
我试图模拟一个非常简单(简化)的接口,它基本上是一个Cache服务的接口:

public interface ICache
{
  T Get<T>(String key);
  T Set<T>(String key,T value); // return T on success or null on fail
}

我想用以下方式使用Moq来模拟这个:

>如果我使用尚未设置的密钥调用Get,则应返回null
>如果我使用键’x’和值’y’调用Set,然后调用Get with
键’x’,它应该返回’y’
>如果我用值’z’覆盖键’x’,然后调用Get
使用键’x’,它应该返回新值’z’而不是’y’.

我知道我可以创建一个实现接口并使用Dictionary的伪对象,但我想知道是否可以使用Moq轻松完成.谢谢!

解决方法

对我而言,您描述的行为意味着一个基础字典.但是对于一个简单的单元测试,我可能只需要两次调用Setup来管理这些期望.

mockCache.Setup(c => c.Get(It.Is<string>(x))).Returns(y);

//...other code
mockCache.Object.Set(x,z);
mockCache.Setup(c => c.Get(It.Is<string>(x)).Returns(z);
//...other code

(编辑:李大同)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    推荐文章
      热点阅读