Ada*_*dam 4 asp.net unit-testing moq
我见过很多类似的线程,但实际上并没有解决我的特殊情况.
我在ASP.NET 4.0 Web应用程序(ASP.NET Forms,而不是MVC)中编写单元测试.代码中有几个点我称之为ServerVariables
集合来调用变量REMOTE_ADDR
.由于我的单元测试并没有真正开始HttpRequests
执行我的代码时,诸如此类ServerVariables
的Null
,因此错误,当我尝试调用HttpContext.Current.Request.ServerVariables("REMOTE_ADDR")
我发现解决这个问题的所有解决方案都是指MVC,所以他们假设HttpRequest
派生自HttpRequestBase
MVC,而不是ASP.NET Forms.
我尝试使用,Moq
但你不能模拟密封的类,HttpRequest
不幸的是没有接口密封.
Luk*_*keH 13
该HttpRequestBase
和HttpRequestWrapper
类可以用一些工作中使用.
无论您当前访问的位置HttpContext.Current.Request
- 或者只是简单Page.Request
- 您都需要使用可注入的实例HttpRequestBase
.那么你需要注入一个不同的子类,HttpRequestBase
具体取决于你是在测试还是在线.
对于实时代码,您可能会注入一个HttpRequestWrapper
包装的实例HttpContext.Current.Request
:
var liveRequest = new HttpRequestWrapper(HttpContext.Current.Request);
Run Code Online (Sandbox Code Playgroud)对于测试代码,您需要创建并注入自己的模拟子类HttpRequestBase
.据推测,Moq可以在飞行中为您做到这一点.
归档时间: |
|
查看次数: |
3747 次 |
最近记录: |