我有几个使用相同控制器和模型的asp.net mvc网站。
这个共同的逻辑放在单独的库中。 这些库使用HttpContext.Current.Session。我怎样才能让这些单元可测试? 我读了StateValue,但不能完全理解它。我应该在哪里得到这个StateValue的东西?这是我参考的lib吗?如何依赖Session对象的单元测试库
1
A
回答
1
1
- 代码应该使用IHttpSessionState不HttpSessionState。
- 如果您查看IHttpSessionState的MSDN文档,您会发现一个示例实现,您可以将其提升到您的单元测试项目中以创建模拟会话。
- 将获得的Session代码替换为返回IHttpSessionState的静态委托。
- 用一个使用HttpContext.Current.Session的函数初始化静态委托。
- 在单元测试期间用您的IHttpSessionState的模拟实现替换委托。
+0
虽然这听起来很有趣,但它需要我编写一个完整的IHttpSessionState模拟。虽然我引用的这个StateValue似乎为我提供了一个系统,我不必关心是否有会话。 – 2009-01-23 14:09:19
1
只是为了引导人们走出这个天坑(它是作为.NET 3.5)的 - 不要碰IHttpSessionState的嘲讽和测试的目的:
结帐这篇文章: http://stackoverflow.com/questions/176347/asp-net-mvc-test-controllers-w-sessions-mocking – 2009-02-25 18:42:45