I want to testing one method in controller
public class CardController : Controller { IRepository repository; public CardController(IRepository repo) { repository = repo; } [AcceptVerbs("Get", "Post")] public IActionResult CheckPublicID(string PublicID) { if (repository.CheckCardName(PublicID, User.Identity.Name)) { return Json(true); } return Json(false); } How i can add mock User.Identity.Name in HttpContext to my mock controller?
[Fact] public void CheckPublicIDIsEmpty() { Mock<IRepository> mock = new Mock<IRepository>(); mock.Setup(r => r.CheckCardName("TestID", "TestName")).Returns(false); //mock User.Identity.Name CardController cardController = new CardController(mock.Object); var result = cardController.CheckPublicID("TestID"); var viewResult = Assert.IsType<JsonResult>(result); Assert.Equal(false, viewResult.Value); } *change Assert
public ClaimsPrincipal User => HttpContext?.User;so you need to mock HttpContext instead. See this reply. Does it answer your question?