1
如何模擬ASP.NET WebApi ApiControllers的User.Identity [用於單元測試]?在ASP.NET WebApi控制器中嘲笑User.Identity
注:
一些控制器方法返回的是aync [Task]
其在不同的線程
如何模擬ASP.NET WebApi ApiControllers的User.Identity [用於單元測試]?在ASP.NET WebApi控制器中嘲笑User.Identity
注:
一些控制器方法返回的是aync [Task]
其在不同的線程
我不得不做一個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,因此生成假貨的語法可能會因您而異。
WebApi ApiCOntroller使用HttpControllerContext並沒有HttpContext屬性 – Tawani
這可能有所幫助:http://stackoverflow.com/questions/162534/mock-iidentity-and-iprincipal – christiandev
我建議使用內存中的http服務器進行集成測試。您可以將委派處理程序插入管道以處理身份驗證。這篇文章(http://www.strathweb.com/2012/06/asp-net-web-api-integration-testing-with-in-memory-hosting/)可能會有所幫助。 –