在ASP.NET WebApi控制器中模拟User.Identity

时间:2014-05-25 15:11:44

标签: asp.net-mvc asp.net-web-api asp.net-apicontroller

如何模拟ASP.NET WebApi ApiControllers的User.Identity [用于单元测试]?

注意:

某些控制器方法返回的是aync [Task],它们在不同的线程上运行

1 个答案:

答案 0 :(得分:1)

我必须为MVC控制器测试做类似的事情。我最终做的是将假的HttpContext附加到控制器,然后将GenericPrincipal附加到伪上下文。

var myController = new SomeController();
var context = A.Fake<HttpContextBase>();
ControllerContext context = new ControllerContext( new RequestContext( context, new RouteData() ), myController );
myController.ControllerContext = context;
myController.HttpContext.User = new GenericPrincipal( new GenericIdentity( "bob" ), null );

我使用的是FakeItEasy,因此生成假货的语法可能会有所不同。