使用Microsoft Fakes模拟HttpContextBase - 缺少UserGet属性

时间:2013-01-03 12:36:31

标签: c# asp.net-mvc unit-testing mocking

我目前正在尝试使用Microsoft Fakes Framework编写一些单元测试。对于特定的单元测试,我必须模拟Controller.User属性。所以我为System.Web添加了一个假的程序集,并创建了一个System.Fakes.StubHttpContextBase的新实例:

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

在下一步中,我想设置User属性的返回值。我期待找到一个" UserGet"我的StubHttpContextBase实例上的属性,但没有运气:

No UserGet property available

让我感到困惑的是,MS Fakes能够为除了" User"之外的所有其他属性生成getter。属性。我在这里错过了什么吗?

1 个答案:

答案 0 :(得分: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;