如何模拟ASP.NET WebApi ApiControllers的User.Identity [用于单元测试]?
注意:
某些控制器方法返回的是aync [Task]
,它们在不同的线程上运行
答案 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,因此生成假货的语法可能会有所不同。