大佬教程收集整理的这篇文章主要介绍了asp.net-mvc – 如何在asp.net mvc中模拟缓存对象?,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
var mockControllerContext = new mock<ControllerContext>(); var mock@R_772_10107@Context = new mock<@R_772_10107@ContextBase>(); mock@R_772_10107@Context.SetupGet(o => o.CachE).Returns( new CacheWrapper(mockControllerContext.object.@R_772_10107@Context.CachE)); mockControllerContext.SetupGet( o => o.@R_772_10107@Context).Returns(mock@R_772_10107@Context.object); this.tennismatchupController.ControllerContext = mockControllerContext.object;
var @R_772_10107@Context = mockRepository.Generatemock<@R_772_10107@ContextBase>(); @R_772_10107@Context.Expect( h => h.Cache ).Return( @R_772_10107@RunTime.Cache ).Repeat.Any()
原版的:
包装类是要走的路,但我认为你在错误的地方应用它。我会给我的控制器一个CacheWrapper属性,然后创建一个构造函数,允许我传递一个可以设置此属性的CacheWrapper实例。默认情况下,控制器使用@R_772_10107@Context.Current.Cache创建一个CacheWrapper。在测试代码中,构造一个模拟CacheWrapper以传入控制器的构造函数。这样你就不需要创建一个模拟缓存对象了 – 这很难,因为它是一个密封类。
或者,您可以实例化一个Cache类的实例并返回它,因为它有一个公共构造函数。使用模拟的优点在于可以通过预期验证缓存是否被使用,但是我可能会使用包装器。
public class CacheWrapper { private Cache Cache { get; set; } public CacheWrapper() { this.Cache = @R_772_10107@Context.Current.Cache; } public virtual Object Add( String key,Object value,CacheDependency dependencies,datetiR_581_11845@e absoluteExpiration,TimeSpan slidingExpiration,CacheItemPriority priority,CacheItemRemovedCallBACk onRemoveCallBACk ) { this.Cache.Add( key,value,dependencies,absoluteExpiration,slidingExpiration,priority,onRemoveCallBACk ); } ...wrap other methods... } public class BaseController : Controller { private CacheWrapper { get; set; } public BaseController() : this(null) { } public BaseController( CacheWrapper cache ) { this.CacheWrapper = cache ?? new CacheWrapper(); } } [TestMethod] public void CacheTest() { var wrapper = mockRepository.Generatemock<CacheWrapper>(); wrapper.Expect( o => o.Add( ... ) ).Return( ... ); var controller = new BaseController( wrapper ); var result = controller.MyAction() as ViewResult; Assert.AreEqual( ... ); wrapper.VerifyAllExpectations(); }
以上是大佬教程为你收集整理的asp.net-mvc – 如何在asp.net mvc中模拟缓存对象?全部内容,希望文章能够帮你解决asp.net-mvc – 如何在asp.net mvc中模拟缓存对象?所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。