我正在尝试对剃刀视图进行单元测试(MVC .NET)。我想测试用户登录的名称是否出现在网站上。由于User.Identity.Name,我不知道如何做到这一点 - 这是一个静态对象,因此不能被模拟。
这个静态对象应该在测试中设置吗?有没有更好的方法呢?
谢谢!
答案 0 :(得分:0)
您可以使用模拟HttpContext创建一个ControllerContext,以根据自己的喜好返回IPrincipal。请参阅此文章,了解如何执行此操作:
Mocking and HttpContextBase.get_User()
该示例使用Rhino Mocks,但很容易适应您正在使用的任何模拟框架。确保伪造的IPrincipal.Identity.Name返回名称的字符串。如果您认为不清楚,我可以举例说明FakeItEasy或Rhino Mocks。
然后,您可以断言ViewBag或ViewModel中为您的视图放置的用户名等于您让假IIdentity返回的名称。