.NET:我怎么能单元测试这种方法? [英] .NET: how can I unit test this method?

查看:127
本文介绍了.NET:我怎么能单元测试这种方法?的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

(类似 .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!

推荐答案

从的 HttpSimulator 类=HTTP:/ /www.koders.com/csharp/fid2274359C5AC2884D2CE293A23E33516EAFF211D4.aspx?s=system#L1相对=nofollow> www.koders.com - Subtext.TestLibrary

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屋!

查看全文
登录 关闭
扫码关注1秒登录
发送“验证码”获取 | 15天全站免登陆