【发布时间】:2012-08-29 05:51:44
【问题描述】:
我正在尝试对剃刀视图 (MVC .NET) 进行单元测试。我想测试登录的用户名是否出现在网站上。由于 User.Identity.Name,我不确定我将如何做到这一点 - 这是一个静态对象,所以不能被嘲笑。
应该在测试中设置这个静态对象吗?有更好的方法吗?
谢谢!
【问题讨论】:
标签: asp.net-mvc-3 razor tdd
我正在尝试对剃刀视图 (MVC .NET) 进行单元测试。我想测试登录的用户名是否出现在网站上。由于 User.Identity.Name,我不确定我将如何做到这一点 - 这是一个静态对象,所以不能被嘲笑。
应该在测试中设置这个静态对象吗?有更好的方法吗?
谢谢!
【问题讨论】:
标签: asp.net-mvc-3 razor tdd
您可以创建一个带有模拟 HttpContext 的 ControllerContext,以根据您的喜好返回 IPrincipal。请参阅这篇文章了解如何做到这一点:
Mocking and HttpContextBase.get_User()
该示例使用 Rhino Mocks,但很容易适应您使用的任何模拟框架。确保伪造的 IPrincipal.Identity.Name 返回名称的字符串。如果你觉得不清楚,我可以举一个 FakeItEasy 或 Rhino Mocks 的例子。
然后,您可以断言放置在 ViewBag 或 ViewModel 中的用户名与您让假 IIdentity 返回的用户名相同。
【讨论】: