0

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

这个静态对象是否应该在测试中设置?有没有更好的方法来做到这一点?

谢谢!

4

1 回答 1

0

您可以创建一个带有模拟 HttpContext 的 ControllerContext,以根据您的喜好返回 IPrincipal。请参阅这篇文章,了解如何做到这一点:

模拟和 HttpContextBase.get_User()

该示例使用 Rhino Mocks,但很容易适应您使用的任何模拟框架。确保假的 IPrincipal.Identity.Name 返回名称的字符串。如果你认为它不清楚,我可以给你一个 FakeItEasy 或 Rhino Mocks 的例子。

然后,您可以断言放置在 ViewBag 或 ViewModel 中的用户名与您让假 IIdentity 返回的用户名相同。

于 2012-08-28T21:51:44.263 回答