Fakes里的stub和shim的区别
2024-09-01 13:56:23
stub常用于虚拟接口、类、方法,无法重写静态方法(stub需要传递到具体调用代码中)
shim常用于重写静态方法(在ShimsContext.Create()作用域内,拦截Runtime动态修改方法的实现,静态方法无需传递)
shim如果用于重写非静态方法,依然需要传递
以下两种的目的都是虚拟TokenHandler.GetToken这个方法
stub:
var stubTokenHandler = new StubTokenHandler<Token>("user")
{
GetToken = () => { return new Token() { UserId = }; }
};
shim:(可以和stub一样直接修改GetToken方法,但就无法达到全局调用的目的;下面的例子里是通过Factory静态方法调用,虚拟整个类的实现以达到全局可调用的目的)
using (ShimsContext.Create())
{
ShimTokenFactory.TokenHandler = () =>
{
return new TokenHandlerDefine(1);
};
}
public class TokenHandlerDefine : TokenHandler<Token>
{
private int userId;
public TokenHandlerDefine(int userId)
{
this.userId = userId;
} public override Token GetToken()
{
return new Token() { UserId = userId };
}
}
public class TokenFactory
{
public static TokenHandler<Token> TokenHandler()
{
return new TokenHandler<Token>("user");
}
}
最新文章
- 浅谈linux 下,利用Nginx服务器代理实现ajax跨域请求。
- Linux学习笔记(5)-hello world
- IP首部校验和的计算
- chrome开发总结(交互/权限/存储)-爬虫
- plain framework 1 参考手册 入门指引之 简明教程
- Android中this、super的区别
- Codeforces Round #367 (Div. 2) D. Vasiliy&#39;s Multiset(可持久化Trie)
- python迭代器与生成器
- EXTJS 密码确认与验证
- 用Ant实现Java项目的自动构建和部署(转)
- 深入研究Java类加载机制
- C++ Primer 学习笔记_95_用于大型程序的工具 --多重继承与虚继承
- 字符串(后缀自动机):COGS 2399. 循环同构
- VK Cup 2015 - Round 1 -E. Rooks and Rectangles 线段树最值+扫描线
- 使用ImageView
- <;META http-equiv=Content-Type content=";text/html; charset=gb2312";>;
- IntelliJ Idea + Maven + Junit
- thinkphp5 行为(钩子)扩展
- 2018-2019 2 20165203 《网络对抗技术》Exp5 MSF基础
- 吴裕雄 python深度学习与实践(5)
热门文章
- Go 语言解释器 Yaegi
- hive表的DDL
- tinymce编辑器从word粘贴公式
- linux系列(十四):head命令
- centos7 安装python3.7.1
- 小程序web-view的使用,跳转到外部链接~
- 走进JavaWeb技术世界14:通过项目逐步深入了解Mybatis(一)
- 图片上传利用request.getInputStream()获取文件流时遇到的问题
- Linux内存使用情况以及内存泄露情况
- Apache RocketMQ 的过去、现在和未来 原创: DataPipeline DataPipeline数见科技 前天