tdd - 如何测试User.Identity.Name是否出现在剃刀视图中

时间:2012-08-23 14:07:11

标签: asp.net-mvc-3 razor tdd

我正在尝试对剃刀视图进行单元测试(MVC .NET)。我想测试用户登录的名称是否出现在网站上。由于User.Identity.Name,我不知道如何做到这一点 - 这是一个静态对象,因此不能被模拟。

这个静态对象应该在测试中设置吗?有没有更好的方法呢?

谢谢!

1 个答案:

答案 0 :(得分:0)

您可以使用模拟HttpContext创建一个ControllerContext,以根据自己的喜好返回IPrincipal。请参阅此文章,了解如何执行此操作:

Mocking and HttpContextBase.get_User()

该示例使用Rhino Mocks,但很容易适应您正在使用的任何模拟框架。确保伪造的IPrincipal.Identity.Name返回名称的字符串。如果您认为不清楚,我可以举例说明FakeItEasy或Rhino Mocks。

然后,您可以断言ViewBag或ViewModel中为您的视图放置的用户名等于您让假IIdentity返回的名称。