我有ASP.NET MVC5和WebApi2应用程序与一些MVC和ApiControllers . 使用OWIN和Autofac . 我编写了集成测试,它调用了一些web api方法并测试了一个响应:
[TestMethod]
public async Task GetUsersForTreeTest()
{
using (var server = TestServer.Create<Startup>())
using (var client = new HttpClient(server.Handler))
{
client.BaseAddress = new Uri("http://localhost/api/");
client.DefaultRequestHeaders.Accept.Clear();
client.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
var resp = await client.GetAsync("User/GetUsersForTree");
resp.EnsureSuccessStatusCode();
var users = await resp.Content.ReadAsAsync<List<UserForTreeDto>>();
Assert.IsTrue(users.Any());
}
}
Startup是我的OWIN启动类 . 我使用Autofac初始化MVC和WebApi的依赖项解析器 .
当我运行测试时,我得到一个例外:
System.ArgumentNullException:值不能为null . 参数名称:httpContext结果StackTrace:位于Owin.AutofacMvcAppBuilderExtensions的System.Web.HttpContextWrapper..ctor(HttpContext httpContext) . <> c . < . cctor> b__2_0()at Owin.AutofacMvcAppBuilderExtensions . <> c . <b__1_0> d . 的MoveNext()
但是当我发表评论时
app.UseAutofacMvc();
测试通过了 . 据我了解,错误发生在AutofacMvcAppBuilderExtensions类的this line中 .
看起来像HttpContext.Current是null .
如何初始化HttpContext?
1 回答
以下代码适用于我: