2014-05-25 74 views
1

如何模擬ASP.NET WebApi ApiControllers的User.Identity [用於單元測試]?在ASP.NET WebApi控制器中嘲笑User.Identity

注:

一些控制器方法返回的是aync [Task]其在不同的線程

+0

這可能有所幫助:http://stackoverflow.com/questions/162534/mock-iidentity-and-iprincipal – christiandev

+0

我建議使用內存中的http服務器進行集成測試。您可以將委派處理程序插入管道以處理身份驗證。這篇文章(http://www.strathweb.com/2012/06/asp-net-web-api-integration-testing-with-in-memory-hosting/)可能會有所幫助。 –

回答

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,因此生成假貨的語法可能會因您而異。

+2

WebApi ApiCOntroller使用HttpControllerContext並沒有HttpContext屬性 – Tawani