如果使用Application,如何对asp.net api进行单元测试

时间:2016-06-03 03:28:27

标签: asp.net-web-api

在我的globals.asax.cs中,我正在创建一个字典对象,我想在我的API中使用它来在应用程序的生命周期中添加和获取数据。 我做了以下事情:

Application["MyDictionary"] = myDictionary;

在我的ApiController中,我以这种方式处理它:

MyDictionary myDictionary= (MyDictionary)HttpContext.Current.Application["MyDictionary"];

到目前为止一直很好,问题是我需要在单元测试中做同样的事情,我需要将这个字典添加到我的应用程序中,所以当我调用我的控制器时,我将能够检索它,我怎么做 ? 这样做:

HttpContext.Current.Application.Add("MyDictionary", myDictionary);
enter code here

不起作用,我得到例外:

  

类型' System.NullReferenceException'的例外情况发生在RESTServices.Tests.dll但未在用户代码中处理

我的HttpContext.Current为空。

任何想法如何解决这个问题?

1 个答案:

答案 0 :(得分:0)

收到请求时会创建HttpContext.Current,因此您需要在使用之前设置Current属性。

请参阅以下示例:

var myDictionary = new Dictionary<string, string>();
HttpContext.Current = new HttpContext(new HttpRequest("default.aspx", "http://localhost", string.Empty), new HttpResponse(new StringWriter(CultureInfo.InvariantCulture)));
HttpContext.Current.Application.Add("MyDictionary", myDictionary);