如何为方法准备HttpContext类型的参数?

时间:2017-02-15 22:12:04

标签: c# http web

我正在尝试对方法进行单元测试。该方法接受一个参数,该参数属于.NET Framework类库中的类HttpContext。 所以我想我需要准备一个HttpContext的对象。

该方法需要的所有内容,例如context,都是

  • context.Request.QueryString
  • context.Request.Headers

以下是我的想法和问题

  1. 要了解如何使用HttpContext,我点击进入定义 Visual Studio,我发现该类有一个构造函数

        public HttpContext(HttpRequest request, HttpResponse response);
    

    所以我需要提供它的两个参数,以便创建一个对象 该课程。

    为了提供第一个参数,它是HttpRequest的一个对象,我找到了它的构造函数

    //
    // Summary:
    //     Initializes an System.Web.HttpRequest object.
    //
    // Parameters:
    //   filename:
    //     The name of the file associated with the request.
    //
    //   url:
    //     The information regarding the URL of the current request.
    //
    //   queryString:
    //     The entire query string sent with the request (everything after the'?').
    public HttpRequest(string filename, string url, string queryString);
    
    • filename的含义是什么?

    • 哪个是url,包含查询字符串的完整网址,还是?之前的部分?

    为了提供类HttpResponse的第二个参数,我找到了它的构造函数

    public HttpResponse(TextWriter writer);
    

    要测试的方法实际上并不需要context.Response。所以我可以简单地将其创建为HttpContext的构造函数的第二个参数:

    writer = new TextWriter ();
    response = new HttpResponse(writer);
    

    鉴于TextWriter的构造函数受到保护?

    protected TextWriter();
    protected TextWriter(IFormatProvider formatProvider);
    
  2. 在我可以创建HttpContext的对象之后,我是否需要调用一些对象 解析url和查询字符串以获取

    的方法
    • context.Request.QueryString
    • context.Request.Headers

    HttpContext将隐含地在没有我的情况下完成工作 显式调用任何方法?

  3. 感谢。

0 个答案:

没有答案