.NET:我怎么能单元测试这种方法? [英] .NET: how can I unit test this method?
问题描述
(类似 .NET如何捏造的HttpContext对象!)
我有我想要测试的方法:
I have a method that I want to test:
public void MyMethod()
{
if (HttpContext.Current.Application["myValue"] != null)
Console.WriteLine("Boo!");
}
我怎么能写一个测试没有重构的方法,使<$ C ?$ C> Console.WriteLine 被击中
我试着用:
TextWriter tw = new StringWriter();
HttpWorkerRequest wr = new SimpleWorkerRequest("/webapp", @"path...", "logon.asp", "", tw);
HttpContext.Current = new HttpContext(wr);
HttpContext.Current.Application.Add("KeyValue", "myValue");
MyMethod();
但HttpContext.Current.Application.count始终为零,我不能值将它添加!
but HttpContext.Current.Application.count is always zero, I cannot add values to it!
推荐答案
You can use HttpSimulator
class from www.koders.com - Subtext.TestLibrary
只需调用
new Subtext.TestLibrary.HttpSimulator().SimulateRequest();
设定您的的HttpContext
得当,这样你就可以还添加值应用
词典。
sets your HttpContext
properly, so you can also add values to Application
dictionary.
杰夫说,它集 HttpApplicationFactory._theApplicationFactory ._state
使用如下反映,但你不必理会它,其实。
As Jeff said, it sets HttpApplicationFactory._theApplicationFactory._state
using Reflection as below, but you don't have to bother about it, actually.
Type appFactoryType = Type.GetType("System.Web.HttpApplicationFactory, System.Web, Version=2.0.0.0, Culture=neutral, PublicKeyToken=b03f5f7f11d50a3a");
object appFactory = ReflectionHelper.GetStaticFieldValue<object>("_theApplicationFactory", appFactoryType);
ReflectionHelper.SetPrivateInstanceFieldValue("_state", appFactory, HttpContext.Current.Application);
这篇关于.NET:我怎么能单元测试这种方法?的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持IT屋!