2010-03-09 120 views
1

我正在使用MVP模式处理ASP.NET WebForm应用程序。对于每个Web窗体,都有一个Presenter类关联来处理UI和业务逻辑。不过,由于在演示者中使用了会话值,因此在为演示者编写单元测试时遇到了问题。在执行单元测试期间不存在HTTP上下文(顺便说一下,我使用nUnit),这使得为演示者编写单元测试是不可能的。ASP.NET Web测试演示者表单

任何人都可以解释如何单元测试这些演示者?

感谢

+0

我知道这是一个有点老问题,但你能告诉我为什么你的主持人访问Sessoin对象?我的意思是你可以传递来自视图的Session值,你不需要依赖于HttpContext,因此不需要嘲笑。我问,因为我是新来的这个东西。 – jim 2012-03-28 08:51:01

回答

1

您可以更改您的Presenter类以对HttpContextBase进行依赖。一旦完成,您可以提供模拟版本的HttpContext给您的演示者类进行测试。在生产中,您只需提供HttpContext.Current属性。

1

嗯,我会建议另一种方法。 我认为你的演示者不应该知道HttpContext,PageLifeCycle等,因为你必须单独测试它。因此,不要尝试模拟IHttpContext,尝试提取演示者中需要的值(不需要整个httpcontext对象,只需要来自会话,cookie等的一些值),并通过演示者构造函数注入演示者。现在你可以正确地测试它。

干杯