2013-01-03 21 views
2

我正在嘗試使用Microsoft Fakes Framework來編寫一些單元測試。對於特定的單元測試,我必須模擬Controller.User屬性。所以我增加了對System.Web程序假的組裝和創造System.Fakes.StubHttpContextBase的新實例:用Microsoft Fakes嘲笑HttpContextBase - UserGet屬性丟失

var stubHttpContext = new System.Web.Fakes.StubHttpContextBase(); 

在下一步我想設置用戶屬性的返回值。我希望能夠找到我的StubHttpContextBase實例「UserGet」屬性,但沒有運氣:

No UserGet property available

真正讓我困惑的是,MS假貨能夠生成所有其他屬性獲取除「用戶」屬性。我在這裏錯過了什麼嗎?

+1

看http://www.richonsoftware.com/post/2012/05/02/Noninvasive-Unit-Testing-in-ASPNET-MVC-A-Microsoft-Fakes-Deep-Dive.aspx。可能你需要填充而不是存根? –

回答

2
var child = new StubHttpContextBase(); 
var basecontext= new ShimHttpContextBase(child) 
    { 
     UserGet=() => 
      new GenericPrincipal(new GenericIdentity("mhu"), new string[0]) 
    }; 

var conCntx = new ControllerContext(); 
conCntx.HttpContext = basecontext; 
controllerUnderTest.ControllerContext = conCntx;