2012-08-23 70 views
0

我想單元測試剃刀視圖(MVC .NET)。我想測試用戶登錄名是否出現在網站上。我不知道如何做到這一點,由於User.Identity.Name - 這是一個靜態對象,所以不能被嘲笑。tdd - 如何測試User.Identity.Name是否出現在剃刀視圖

該靜態對象是否應該在測試中設置?有沒有更好的方法來做到這一點?

謝謝!

回答

0

您可以使用模擬HttpContext創建一個ControllerContext,以根據您的喜好返回IPrincipal。查看該怎麼做這個帖子:

Mocking and HttpContextBase.get_User()

的例子使用犀牛製品,但很容易適應任何模擬框架所使用。確保假IPrincipal.Identity.Name返回名稱的字符串。如果你認爲它不明確,我可以給你一個FakeItEasy或Rhino Mocks的例子。

然後,您可以斷言放置在ViewBag或ViewModel中用於您的視圖的用戶名與您假冒的IIdentity返回的名稱相同。