Używam Web API 2. W kontrolerze web api użyłem metody GetUserId
do wygenerowania identyfikatora użytkownika przy użyciu Asp.net Identity.Jak wygenerować Asp.net Tożsamość użytkownika podczas testowania kontrolerów WebApi
Muszę napisać test jednostki MS dla tego kontrolera. Jak uzyskać dostęp do identyfikatora użytkownika z projektu testowego?
Załączam przykładowy kod poniżej.
Web API Controller
public IHttpActionResult SavePlayerLoc(IEnumerable<int> playerLocations)
{
int userId = RequestContext.Principal.Identity.GetUserId<int>();
bool isSavePlayerLocSaved = sample.SavePlayerLoc(userId, playerLocations);
return Ok(isSavePlayerLocSaved);
}
Web API klasa testowania kontrolera
[TestMethod()]
public void SavePlayerLocTests()
{
var context = new Mock<HttpContextBase>();
var mockIdentity = new Mock<IIdentity>();
context.SetupGet(x => x.User.Identity).Returns(mockIdentity.Object);
mockIdentity.Setup(x => x.Name).Returns("admin");
var controller = new TestApiController();
var actionResult = controller.SavePlayerLoc(GetLocationList());
var response = actionResult as OkNegotiatedContentResult<IEnumerable<bool>>;
Assert.IsNotNull(response);
}
Próbowałem za pomocą metody makiety jak powyżej. Ale to nie działa. Jak wygenerować tożsamość użytkownika Asp.net, gdy wywołuję metodę testowania do kontrolera?