Gewusst wie: hinzufügen Ansprüche in einem mock "ClaimsPrincipal"

Ich versuche, unit-test-meine-controller-code, der bekommt die Informationen aus den "claimsprincipal".Aktuelle.
In der controller-code, den ich

public class HomeController {
    public ActionResult GetName() {
        return Content(ClaimsPrincipal.Current.FindFirst("name").Value);
    }
}

Ich versuche zu verspotten, meine "ClaimsPrincipal" - mit Behauptungen, aber ich habe noch nicht alle mock-Wert aus der Forderung.

//Arrange
IList<Claim> claimCollection = new List<Claim>
{
    new Claim("name", "John Doe")
};

var identityMock = new Mock<ClaimsIdentity>();
identityMock.Setup(x => x.Claims).Returns(claimCollection);

var cp = new Mock<ClaimsPrincipal>();
cp.Setup(m => m.HasClaim(It.IsAny<string>(), It.IsAny<string>())).Returns(true);
cp.Setup(m => m.Identity).Returns(identityMock.Object);

var sut = new HomeController();

var contextMock = new Mock<HttpContextBase>();
contextMock.Setup(ctx => ctx.User).Returns(cp.Object);

var controllerContextMock = new Mock<ControllerContext>();
controllerContextMock.Setup(con => con.HttpContext).Returns(contextMock.Object);
controllerContextMock.Setup(con => con.HttpContext.User).Returns(cp.Object);

sut.ControllerContext = controllerContextMock.Object;

//Act
var viewresult = sut.GetName() as ContentResult;

//Assert
Assert.That(viewresult.Content, Is.EqualTo("John Doe"));

Den viewresult.Inhalt ist leer wie kann ich das ausführen der unit-test. Jede Hilfe, ob ich hinzufügen können, die mock-Anspruch. Danke.

InformationsquelleAutor Henry | 2016-07-12

Schreibe einen Kommentar