Arv*_*att 3 asp.net-mvc unit-testing session-variables httpcontext
我正在对控制器进行单元测试。
在我的一种控制器方法中,我正在设置会话变量:
public void Index()
{ Session["foo"] = "bar";
return View();
}
Run Code Online (Sandbox Code Playgroud)
如何对此进行单元测试?问题是测试时Session属性为null。由于Session属性为只读,因此无法进行注入。
我不想使用任何第三方工具或嘲笑。
只需不要在控制器方法中使用Session [“ foo”]之类的东西。最佳实践是使操作方法不了解任何类似上下文的全局对象。您的操作方法需要的所有内容都应以参数的形式提供给她。请注意,模型绑定的内置机制与之完全一样-您不使用Request.Form [],而是让“幕后某人”将其作为参数传递给您的操作。
现在,对于会话,您可以执行相同操作-为您编写一个非常简单的ValueProvider,它将知道如何识别要从会话中填充的参数,然后就完成了。在生产中,您的操作将与会话配合使用,在测试中,您不能简单地将您想要的任何值作为参数传递给它们。
为了获得灵感,请查看此http://www.prideparrot.com/blog/archive/2012/7/how_to_create_a_custom_session_value_provider
| 归档时间: |
|
| 查看次数: |
3918 次 |
| 最近记录: |