asp.net – 如何对缓存层进行单元测试
我在项目中添加了一个缓存层.现在我想知道我是否可以单元测试操作缓存的方法?或者有更好的方法来测试Layer的逻辑吗?
我只是想检查一下这个过程,例如: 1-当项目不在缓存中时,方法应该命中数据库 2-下一次方法应该使用缓存 3-当对数据库进行更改时,应清除缓存 4-如果从数据库中检索的数据为空,则不应将其添加到缓存中 我想确保我放入方法的逻辑按预期工作. 解决方法
我假设缓存是第三方缓存?如果是这样,我不会测试它.否则你正在测试别人的代码.
如果这个缓存非常重要,你需要对它进行测试,我会进行integration或acceptance测试.换句话说,点击相关的页面/服务并检查内容.根据您要测试的内容的定义,这不是unit test. 另一方面,如果缓存是您自己推出的缓存,您将能够轻松地对功能进行单元测试.您可能希望检查基于验证的测试以测试缓存的行为,因为实际检查的内容是从缓存中添加/删除的.查看mocking了解实现此目的的方法. 要通过Mock对象(或类似的东西)测试行为,我会执行以下操作 – 尽管您的代码会有所不同. class Cacher { public void Add(Thing thing) { // Complex logic here... } public Thing Get(int id) { // More complex logic here... } } void DoStuff() { var cacher = new Cacher(); var thing = cacher.Get(50); thing.Blah(); } 为了测试上面的方法,我有一个使用模拟Cacher的测试.您需要在运行时将其传递给方法或将依赖项注入构造函数.从这里开始,测试只会检查cache.Get(50)是否被调用.并不是该项目实际上是从缓存中检索的.这是测试应该如何使用cacher的行为,而不是它实际上是缓存/检索任何东西. 然后,您可以孤立地回退到基于状态的Cacher测试.例如,您添加/删除项目. 就像我之前说的那样,根据你想做的事情,这可能有些过分.但是你似乎非常有信心缓存非常重要,足以保证这种测试.在我的代码中,我尝试尽可能地限制模拟对象,尽管这听起来像一个有效的用例. (编辑:李大同) 【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容! |
- asp.net – 如何将新的Web应用程序部署到IIS站点的子目录,而
- asp.net-web-api – IExceptionHandler的多个实现
- asp.net – 您如何看待Postgres和Firebird数据库?
- 记一道毫无思路的算法题
- asp.net – 如何将一个对象序列化为查询字符串格式?
- asp.net-mvc – 怎么样?控制器返回任何/当前视图
- 如何设置asp.net下拉列表的样式
- asp.net-mvc – ASP.NET MVC验证针对空列表框抛出NullRefer
- asp.net-mvc – IE9从URL中删除#part(适用于Firefox!)
- 适用于ASP.NET的SaaS入门套件,涵盖订阅,计费等