2009-01-23 88 views
1

我有几个使用相同控制器和模型的asp.net mvc网站。
这个共同的逻辑放在单独的库中。 这些库使用HttpContext.Current.Session。我怎样才能让这些单元可测试? 我读了StateValue,但不能完全理解它。我应该在哪里得到这个StateValue的东西?这是我参考的lib吗?如何依赖Session对象的单元测试库

+0

结帐这篇文章: http://stackoverflow.com/questions/176347/asp-net-mvc-test-controllers-w-sessions-mocking – 2009-02-25 18:42:45

回答

1

你可以使用Mock佣工如看到here

+0

我发现在这种情况下使用Moq非常容易。 +1给你。 – Perpetualcoder 2009-01-23 21:13:02

1
  1. 代码应该使用IHttpSessionState不HttpSessionState。
  2. 如果您查看IHttpSessionState的MSDN文档,您会发现一个示例实现,您可以将其提升到您的单元测试项目中以创建模拟会话。
  3. 将获得的Session代码替换为返回IHttpSessionState的静态委托。
  4. 用一个使用HttpContext.Current.Session的函数初始化静态委托。
  5. 在单元测试期间用您的IHttpSessionState的模拟实现替换委托。
+0

虽然这听起来很有趣,但它需要我编写一个完整的IHttpSessionState模拟。虽然我引用的这个StateValue似乎为我提供了一个系统,我不必关心是否有会话。 – 2009-01-23 14:09:19