大佬教程收集整理的这篇文章主要介绍了asp.net-mvc – asp.net mvc如何正确测试控制器,大佬教程大佬觉得挺不错的,现在分享给大家,也给大家做个参考。
SomethingController CreateSomethingController() { var somethingData = FakeSomethingData.CreateFakeData(); var fakeRepository = FakeRepository.Create(); var controller = new SomethingController(fakeRepository); return controller; }
这适用于大多数测试,直到我得到request.IsAjaxrequest()部分代码.所以我不得不模拟httpContext和httprequestBase.所以我的代码然后改为看起来像:
public class FakehttpContext : httpContextBase { bool _isAjaxrequest; public FakehttpContext( bool isAjaxrequest = false ) { _isAjaxrequest = isAjaxrequest; } public override httprequestBase request { get { String ajaxrequestHeader = ""; if ( _isAjaxrequest ) ajaxrequestHeader = "XMLhttprequest"; var request = new mock<httprequestBase>(); request.SetupGet( x => x.Headers ).Returns( new WebHeaderCollection { {"X-requested-With",ajaxrequestHeader} } ); request.SetupGet( x => x["X-requested-With"] ).Returns( ajaxrequestHeader ); return request.object; } } private iprincipal _user; public override IPrincipal User { get { if ( _user == null ) { _user = new FakePrincipal(); } return _user; } set { _user = value; } } } SomethingController CreateSomethingController() { var somethingData = FakeSomethingData.CreateFakeData(); var fakeRepository = FakeRepository.Create(); var controller = new SomethingController(fakeRepository); ControllerContext controllerContext = new ControllerContext( new FakehttpContext( isAjaxrequest ),new RouteData(),controller ); controller.ControllerContext = controllerContext; return controller; }
现在它已进入我的控制器中的那个阶段,我称之为Url.Route和Url为null.所以看起来我需要开始为我的控制器模拟路线.
我似乎花了更多的时间在google上搜索伪造/模拟对象,然后调试以确保我的假货是正确的,而不是实际编写测试代码.有没有更简单的方法来测试控制器?我看过MvcContrib的TESTControllerBuilder,它可以解决一些问题,但似乎并没有做任何事情.有没有其他可用的工作,让我专注于编写测试而不是编写模拟?
谢谢
以上是大佬教程为你收集整理的asp.net-mvc – asp.net mvc如何正确测试控制器全部内容,希望文章能够帮你解决asp.net-mvc – asp.net mvc如何正确测试控制器所遇到的程序开发问题。
如果觉得大佬教程网站内容还不错,欢迎将大佬教程推荐给程序员好友。
本图文内容来源于网友网络收集整理提供,作为学习参考使用,版权属于原作者。
如您有任何意见或建议可联系处理。小编QQ:384754419,请注明来意。