【发布时间】:2017-07-17 03:38:59
【问题描述】:
我们已经开发了一个 ASP.NET MVC 应用程序。我们被告知使用 NUnit 编写单元测试用例。
这就是应用程序的开发方式。
1) 在Global.asax 的Session_Start 中,我们访问数据库并从数据库中获取一些查找值并将其放入
HttpContext.Current.Application["lookup"]=(dbvalues);
2) 在控制器的 ActionMethods 和其他一些类验证方法中,我们从 Application["lookup"] 获取值。
我们将Application["lookup"] 分配给Viewbag,这将用于在视图中列出值。
例如:我们将放入Application["lookup"] 的商店列表,并在控制器的Index 方法中分配ViewBag.Stores =Application["lookup"]。
现在我们被告知为每个控制器方法编写 Nunit 测试用例。
我们创建了假的或模拟的HttpContext,但问题在于Httpcontext.current.Application。
例如,我们在 Nunit 测试方法中创建了 Httpcontext.Current.Application["lookup"]="values",但是当它遇到控制器 Index 方法时,Application["lookup"] 不存在。请帮助如何创建假Httpcontext.current.Application["lookup"]
【问题讨论】:
-
你为什么使用
Application?为什么不使用依赖注入?模拟起来会容易得多。 -
HttpContext 使单元测试变得困难。抽象出您需要的功能并在需要的地方注入/解决。
标签: c# asp.net-mvc unit-testing asp.net-mvc-4 nunit